如何将高版本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.

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


当前回答

对于小表,可以使用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

其他回答

您可以从任务菜单生成脚本

详细参考

如何迁移SQL Server数据库到低版本

另一种方法是使用“复制数据库”功能:

通过右键单击源数据库>“任务”>“复制数据库”找到。

您可以将数据库复制到低版本的SQL Server实例中。从SQL Server 2008 R2 (SP1) - 10.50.278.9到Microsoft SQL Server 2008 (SP2) - 10.0.3798.0,这对我来说都是有效的

您必须使用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数据库。

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

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

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

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

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