如何将高版本SQL Server数据库备份文件恢复到低版本SQL Server?

使用SQL Server 2008 R2(10.50.1600),我做了一个备份文件,现在我想在我的live服务器的SQL Server 2008(10.00.1600)上恢复它。

当我试图将备份恢复到SQL Server 2008上时,它给出了一个错误,即恢复失败,因为:

数据库备份在运行版本为10.50.1600的服务器上。 该版本与正在运行的服务器不兼容 10.00.1600.

如何恢复该服务器上的备份文件?


当前回答

这并不漂亮,但这就是我如何做到的,前提是你在SQL 2008 R2安装上安装了这个选项。

1)右键单击SQL Server 2008 R2“任务”中的数据库。在向导中“生成脚本”,第一步选择整个数据库和对象。在“设置脚本选项”步骤,你应该看到一个按钮“高级”,选择这个,并确保你选择的“脚本服务器版本”= SQL Server 2008”而不是R2版本。 这是至关重要的一步,因为“导入数据”本身并不会带来所有的主键、约束条件和任何其他对象,如存储过程。”

2)使用查询窗口运行在新的安装实例或数据库实例SQL Express或SQL Server 2008上生成的SQL脚本,或者打开已保存的. SQL脚本并执行,可以看到新的数据库。

3)现在右键点击新的数据库,选择“任务”..“Import Data..”选择源数据库作为R2数据库,目标数据库作为新数据库。“从一个或多个表或视图复制数据”,选中顶部复选框以选择所有表,然后下一步,运行包,您应该在旧版本上拥有所有内容。这应该也适用于回到2005年的版本。希望这能帮助到一些人。

其他回答

您必须使用SSMS中的Import/Export向导来迁移所有内容

使用备份/恢复或分离/附加不可能“降级”。因此,你要做的是:

从运行新SSMS/SQL版本的服务器备份数据库。 通过展开“Tasks”菜单(在右键单击目标数据库之后)并选择“Import data”选项,从生成的.bak文件导入数据。

不,不能降级数据库。其中“10.50.1600”为SQL Server 2008 R2版本。您绝对无法恢复或将此数据库附加到您试图恢复的SQL Server 2008实例(10.00.1600是SQL Server 2008)。你唯一的选择是:

将此实例升级到SQL Server 2008 R2或 恢复您在SQL Server 2008 R2实例上的备份,导出所有数据并导入SQL Server 2008数据库。

你可以试试这个。

在SQL Server 2008上创建数据库。 使用Import Data特性从SQL Server R2(或更高版本)导入数据。 使用“RedGate SQLCompare”同步脚本。

我知道这是一篇老文章,但它可能对人们有用,让他们知道Azure迁移向导(在Codeplex上可用-不能链接到Codeplex,因为我正在输入这篇文章)可以很容易地做到这一点。

这并不漂亮,但这就是我如何做到的,前提是你在SQL 2008 R2安装上安装了这个选项。

1)右键单击SQL Server 2008 R2“任务”中的数据库。在向导中“生成脚本”,第一步选择整个数据库和对象。在“设置脚本选项”步骤,你应该看到一个按钮“高级”,选择这个,并确保你选择的“脚本服务器版本”= SQL Server 2008”而不是R2版本。 这是至关重要的一步,因为“导入数据”本身并不会带来所有的主键、约束条件和任何其他对象,如存储过程。”

2)使用查询窗口运行在新的安装实例或数据库实例SQL Express或SQL Server 2008上生成的SQL脚本,或者打开已保存的. SQL脚本并执行,可以看到新的数据库。

3)现在右键点击新的数据库,选择“任务”..“Import Data..”选择源数据库作为R2数据库,目标数据库作为新数据库。“从一个或多个表或视图复制数据”,选中顶部复选框以选择所有表,然后下一步,运行包,您应该在旧版本上拥有所有内容。这应该也适用于回到2005年的版本。希望这能帮助到一些人。