![将数据库从 SQL Server 2008 转移到 SQL Server 2005?](https://linux22.com/image/505729/%E5%B0%86%E6%95%B0%E6%8D%AE%E5%BA%93%E4%BB%8E%20SQL%20Server%202008%20%E8%BD%AC%E7%A7%BB%E5%88%B0%20SQL%20Server%202005%EF%BC%9F.png)
如何将数据库从 SQL Server 2008 转移到 SQL Server 2005?
我已将兼容级别设置为 90,并创建了备份。
异常消息显示:
设备上的媒体系列...格式不正确
没有机会建立数据库之间的连接来使用 SSIS 向导复制数据。
如何有效地将数据库从 SQL 2008 转移到 2005?
答案1
不幸的是,我很确定根本无法恢复由较新版本的 SQL 服务器备份的数据库。
虽然您无法使用向导连接机器来执行导出,但它们是否可能支持生成包含结构和数据的脚本(很像 mySQL 备份)?标准工具当然可以生成结构和存储可编程性(过程、触发器等)的脚本。导出数据并重新导入可能需要一些准备工作,但这是可能的。
另一个选项是将 SQL2008 安装在 SQL2005 实例的本地某处,然后尝试通过这种方式进行基于向导的传输(还原到该 SQL2008 并从那里通过 SSIS 进行传输)。SQL2008 有一个限时评估版:http://www.microsoft.com/sqlserver/2008/en/us/trial-software.aspx
同样,您可以尝试相同的操作,将 SQL2005 安装在 SQL2008 实例的本地某处,使用 SSIS 将内容传输到那里,从而能够生成与 SQL2005 兼容的备份文件。
答案2
一旦升级,数据库就永远不能降级。设置兼容级别只会改变查询执行的某些方式,但对数据库的物理格式绝对没有影响:90 兼容模式数据库是 SQL 2008 数据库,而不是 SQL 2005 数据库。
因此,如果您需要在 SQL 2005 上部署数据库,则必须在 SQL 2005 上创建它。不仅如此,它还必须是与 SQL 2005 相同的版本,即相同的 SP 和 CU 级别。或者至少是早于目标服务器的版本。因此,如果目标服务器是 SP1 CU3,那么您可以在 RTM 任何 CU 以及 SP1、SP1 CU1、SP1 CU2 或 SP1 CU3 上创建数据库。但您不能在 SP1 CU4 或任何 SP1 之后的版本(如 SP2)上创建它。正如我所说,数据库可以升级,但绝不能降级。
您的选择是将数据库和内容编写成文本 SQL,然后将脚本导入目标服务器,在适当的 SQL 服务器版本上重新创建数据库,或者将目标升级到 2008。
答案3
数据库有多大?我假设您没有使用任何新的 2008 数据类型。
您可以在 SQL Server 2008 中编写数据库架构脚本并使脚本与 2005 兼容。此后,您可以对 2008 年的所有表执行 BCP 并将它们导入 2005 年。您也可以通过 SSIS 实现这一点,但 BCP 会更快(至少对我来说)