如何将高版本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年的版本。希望这能帮助到一些人。

其他回答

您可以使用名为Export data - tier Application的功能,它可以生成包含数据库模式和数据的.bacpac文件。

在目标服务器上,您可以使用Import Data-Tier Application选项,该选项可以从预先创建的.bacpac文件创建并填充新数据库

如果只想传输数据库模式,可以使用Extract Data-Tier Application创建文件,使用Deploy Data-Tier Application部署创建的数据库模式。

我在不同版本的SQL Server上尝试了这个过程,从SQL 2014到SQL 2012,从SQL 2014到SQL 2008R2,效果很好。

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

不,不能降级数据库。其中“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数据库。

不能将在高版本中创建的数据库恢复(或附加)到低版本中。唯一的方法是为所有对象创建一个脚本,并使用该脚本生成数据库。

选择“Schema and Data”-如果你想同时取 备份脚本文件中的内容选择仅架构- 如果只需要模式。

是的,现在您已经完成了使用数据库的模式和数据创建脚本。

你可以试试这个。

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