如何将SQL Server 2008 .mdf文件转换为SQL Server 2012?

时间:2013-03-01 17:55:17

标签: sql-server sql-server-2008 sql-server-2012

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

  

数据库“Sales”无法升级,因为此版本的SQL Server不支持其非发行版本(539)。您无法打开与此版本的sqlservr.exe不兼容的数据库。您必须重新创建数据库   无法打开新数据库'Sales'。 CREATE DATABASE被中止。 (Microsoft SQL Server,错误:950)

2 个答案:

答案 0 :(得分:15)

只需附上它即可升级。如果您没有LDF文件(为什么没有LDF文件?),您可能必须使用:

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

当然有一些警告......

  • 看到你只有.mdf文件,你可能会有一个粗鲁的觉醒。如果文件未与SQL Server完全分离,则可能无法重新连接,您必须返回源服务器以获取正确的备份(而不是.mdf文件)。这将取决于您尝试升级的.mdf文件的位置。如果.mdf文件未完全分离,则可能会出现此错误:
  

文件激活失败。物理文件名“..._ log.LDF”可能不正确   无法重建日志,因为数据库未完全关闭   Msg 1813,Level 16,State 2,Line 1
  无法打开新数据库'DatabaseName'。 CREATE DATABASE被中止。

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

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

答案 1 :(得分:2)

OP似乎错误地认为他的数据库类型。 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.这样执行没有任何问题。