我有一个 SQL Server 2008 数据库需要引入到我的环境中,但我的生产服务器都运行着 SQL Server 2005。升级环境不是一个选择,至少在短期内不是。
然而,如果它们可以在转换过程中提供帮助,我确实有非生产的 SQL Server 2008 机箱可以使用。
该数据库大小为1GB。
我该如何处理这种转换?
谢谢!
答案1
看这个类似的问题关于 2005 年至 2000 年。
唯一的方法是恢复到 2008 服务器,编写 2008 数据库脚本,然后在 SQL2005 服务器上运行该脚本。
好消息是,SQL 2008 Management Studio 使这个过程变得非常简单,甚至为您提供了在脚本中包含数据的选项。只需右键单击数据库,转到任务,然后单击“生成脚本”。按照向导操作,并确保选择包含数据的选项。
编辑:我进一步研究了为什么不能使用其他方法(从备份恢复或通过附加)来完成此操作的技术细节,结果发现数据库有两个不同的属性,兼容级别和数据库版本:(摘自SQL 存储引擎博客)
数据库兼容级别决定了某些数据库行为的工作方式。例如,在 90 兼容性中,您需要使用 OUTER JOIN 语法来执行外连接,而在早期兼容性级别中,您可以使用 '=' 和 '=“”。
升级的数据库保留其兼容级别。例如,在 SQL Server 2000 上创建的数据库,如果其兼容级别没有改变,则在升级到 SQL Server 2005 时将保持 80 兼容级别。
这数据库版本是数据库启动页上标记的数字,指示该数据库所附加的最新 SQL Server 实例的 SQL Server 版本。
SQL Server 不“向上兼容”。您无法将在 SQL Server 2005 上创建的(或已升级到)数据库附加到任何早期版本的 SQL Server(尝试将 2000 数据库附加到 7.0 也是如此,依此类推)。
如果不经过正确的升级程序,您无法附加在早期版本上创建的数据库。使用各种黑客方法强制附加数据库会导致各种奇怪的错误,甚至可能导致崩溃。
答案2
好吧 - 我的以下答案是错误的。我将保留它,因为讨论我为什么错了肯定很有价值。
如果数据库不依赖于 2008 的任何特定功能,请尝试将兼容级别设置为 2005 (90),然后执行备份并还原到您的服务器。
如果您已经收到一个已完成的 DB BAK 文件,我不确定您是否可以执行此操作。
如果它确实依赖于 2008 的特定功能,那么您就没有 DBA 和开发人员来帮助您了。