2013-03-01 243 views
5

我需要将文件DATABASE.MDF从SQL Server 2008转换为SQL Server 2012?如何将SQL Server 2008 .mdf文件转换为SQL Server 2012?

Database 'Sales' cannot be upgraded because its non-release version (539) is not supported by this version of SQL Server. You cannot open a database that is incompatible with this version of sqlservr.exe. You must re-create the database.
Could not open new database 'Sales'. CREATE DATABASE is aborted. (Microsoft SQL Server, Error: 950)

+2

你不需要转换它。直接在SQL Server 2012上恢复它。 – 2013-03-01 17:56:11

+0

感谢您的时间,但我有下一个错误:数据库'销售'无法升级,因为它的非发行版本(539)不受此版本的SQL Server支持。您无法打开与此版本的sqlservr.exe不兼容的数据库。您必须重新创建数据库。 无法打开新的数据库'销售'。 CREATE DATABASE被中止。 (Microsoft SQL Server,错误:950)..................老实说,我发现了几个解决方案,但没有成功 – Andreu 2013-03-01 18:16:30

+2

请查看我的答案更新。你知道SQL Server 2000和SQL Server 2008之间有很大的区别。没有准确地描述你的问题是一个很好的方法来得到一堆无用的建议,并浪费了人们在这个过程中的时间。 – 2013-03-01 18:42:05

回答

15

只要附上它,它就会升级。如果你没有LDF文件(?为什么你不具备LDF文件),您可能需要使用:

CREATE DATABASE [DatabaseName] ON 
    (FILENAME = N'Drive:\path\file.mdf') 
    FOR ATTACH_REBUILD_LOG; 

有一些注意事项,当然...

  • 因为只有.mdf文件,所以你可能会在一个粗鲁的觉醒中。如果文件与SQL Server不完全分离,则可能无法重新附加,并且您将不得不返回到源服务器以获取正确的备份(不是.mdf文件)。这一切都取决于你试图升级的.mdf文件的位置。如果您的.mdf文件未正常脱落,你可能会得到这样的错误:

File activation failure. The physical file name "..._log.LDF" may be incorrect.
The log cannot be rebuilt because the database was not cleanly shut down.
Msg 1813, Level 16, State 2, Line 1
Could not open new database 'DatabaseName'. CREATE DATABASE is aborted.

  • 如果你的数据库是80兼容模式,将升级为90。这可能意味着一些工作的代码可能突然中断,如*=/=*加入语法。
  • 如果你的数据库大于10GB并且你尝试连接到Express(也可能是LocalDB,从来没有尝试过),那么连接将会失败(或者连接成功,但是在第一次自动增长时会失败?还没有测试过) 。
  • 如果您的数据库是在2008 Enterprise/Developer上创建的,并且您仅使用了可用的功能,并且您将该数据库附加到Standard或Express版本,那么您也会遇到问题...
  • 可以从错误消息根本没有试图附加一个2008数据库,而是试图附加一个2000数据库。您不能直接将其添加到SQL Server 2012.您将首先需要将其附加到SQL Server 2005,2008或2008 R2的任何实例以将其升级到该版本,然后将其备份并将其还原到SQL Server 2012.

FWIW,移动从一个实例到另一个数据库的很多很多,更安全的方法是使用BACKUP/RESTORE(原因是,如果你的备份失败,你仍然有数据库的副本 - 如果你分离数据库,出现问题,你有零份)。虽然上述一些问题可能仍然适用于这种更安全的方法。

+0

感谢您的信息....现在..无法打开新的数据库'销售'。 CREATE DATABASE被中止。 Msg 950,Level 20,State 1,Line 1 数据库的“销售”无法升级,因为此版本的SQL Server不支持其非发行版本(539)。您无法打开与此版本的sqlservr.exe不兼容的数据库。您必须重新创建数据库。 如何解决问题? – Andreu 2013-03-01 19:08:45

+3

您是否阅读我的更新*,最后一个以“OK”开头的项目符号?您***无法将此数据库附加到SQL Server 2012 ***。您需要将它附加到2005,2008或2008 R2 * *,然后将其备份并恢复到2012年。停止尝试。其他方法都不会起作用 - SQL Server有意阻止了这种方法。 – 2013-03-01 19:10:53

+0

谢谢,我解决了这个问题,只是为了点OK。我道歉我已经尝试过这么多的选择,并且没有多少时间和很大的压力,但是如果没有你的帮助,我不会做到这一点解决方案:备份/恢复 – Andreu 2013-03-01 19:31:24

2

OP似乎误解了他的DB类型。 SQL Server的版本539是不是2008年,但SQL Server 2000中看到这个线程: SQL Server file version number: where can I find a reference?

我碰到的这个相同的错误消息试图附加/还原SQL Server 2000的分贝SQL Server 2012中的一个实例。也许有一种解决方法,但是我所做的是首先转换为SQL Server 2008 R2,然后转换为SQL Server 2012.这样做没有问题。

+0

你将它转换为2012版本。有没有工具? – yogihosting 2017-03-01 14:06:00

+0

实际上,如果我从.bak恢复或者只是简单地附加和分离数据库,我不记得。 我在我的机器上同时安装了2008R2和2012实例,因此我只是将其附加/恢复到2008实例,然后分离/备份并附加/恢复到2012实例。 – qianlong 2017-03-08 02:51:19

相关问题