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

And*_*reu 5 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)

Aar*_*and 15

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

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

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

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

文件激活失败.物理文件名"..._ log.LDF"可能不正确.
无法重建日志,因为数据库未完全关闭.
消息1813,级别16,状态2,行1
无法打开新数据库'DatabaseName'.CREATE DATABASE被中止.

  • 如果您的数据库处于80兼容模式,它将升级到90.这可能意味着某些工作代码可能会突然中断,例如*=/ =*join语法.
  • 如果您的数据库大于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(原因是如果您的备份失败,您仍然拥有数据库的副本 - 如果您分离数据库,那么事情就会发生错了,你有零拷贝).虽然上述一些问题可能仍然适用于这种更安全的方法.

  • 你有没有*读过我的更新*,最后一个以"OK"开头的要点?您***无法将此数据库附加到SQL Server 2012***.您需要将其附加到2005,2008或2008 R2***,然后将其备份并将其恢复到2012年.停止尝试.没有其他方法可以工作 - 这是由SQL Server故意阻止的. (3认同)