如何将高版本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 Server数据库到低版本

其他回答

以下是我对完成这个任务的不同选择的2点看法:

第三方工具:完成这项工作最简单的方法可能是在低版本上创建一个空数据库,然后使用第三方工具读取备份,并将新创建的数据库与备份同步。

红门是最受欢迎的之一,但还有许多其他像ApexSQL Diff, ApexSQL数据Diff, Adept SQL, Idera ....所有这些都是高级工具,但你可以在试用模式下完成工作;)

生成脚本:正如其他人已经提到的,您总是可以使用SSMS编写脚本结构和数据,但您需要考虑到执行的顺序。默认情况下,对象脚本的顺序是不正确的,您必须注意依赖关系。如果数据库很大并且有很多对象,这可能是一个问题。

导入和导出向导:这不是一个理想的解决方案,因为它不会恢复所有对象,而只恢复数据表,但当需要时,您可以考虑使用它进行快速和肮脏的修复。

对于小表,可以使用BCP in和out。

BCP OUT命令:-

BCP "SELECT *  FROM [Dinesh].[dbo].[Invoices]" QUERYOUT C:\av\Invoices1.txt -S MC0XENTC -T -c -r c:\error.csv

BCP IN command:- 为Invoicescopy1创建表结构。

BCP [Dinesh].[dbo].[Invoicescopy1] IN C:\av\Invoices.txt -S MC0XENTC -T -c

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

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

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

您可以使用名为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,效果很好。

你可以试试这个。

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