如何将高版本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实例中。从SQL Server 2008 R2 (SP1) - 10.50.278.9到Microsoft SQL Server 2008 (SP2) - 10.0.3798.0,这对我来说都是有效的

其他回答

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

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

不一定会起作用

备份/恢复-当目标是较早的MS SQL版本时将不起作用。 复制数据库-当目标是SQL Server Express时将不起作用:“目标服务器不能是SQL Server 2005或更高版本的Express实例。” 数据导入——不会复制模式。

将工作

Script generation - Tasks -> Generate Scripts. Make sure you set the desired target SQL Server version on the Set Scripting Options -> Advanced page. You can also choose there whether to copy schema, data, or both. Note that in the generated script, you may need to change the DATA folder for the mdf/ldf files if moving from non-express to express or vice versa. Microsoft SQL Server Database Publishing Services - comes with SQL Server 2005 and above, I think. Download the latest version from here. Prerequisites: sqlncli.msi/sqlncli_x64.msi/sqlncli_ia64.msi, SQLServer2005_XMO.msi/SQLServer2005_XMO_x64.msi/SQLServer2005_XMO_ia64.msi (download here).

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

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

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

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