SQL Server不允许从较高版本获取数据库备份并将其恢复到较低版本。并且,当尝试将数据库降级到旧版本的SQL Server时,您可能会遇到以下错误:

在这里,错误消息清楚地指出数据库恢复失败因为备份是从SQL Server 2008版本,但恢复到SQL Server 2012版本。
为什么会出现这种情况?
即使数据库对象(如表、存储过程、视图等)与较低版本的SQL Server兼容,恢复较新版本的SQL Server上的备份仍然会失败。这是因为每个版本的SQL Server中的数据库发生了变化,例如累积更新。
如何将数据库恢复到旧的SQL Server版本?
您可以按照以下步骤尝试将SQL Server 2012(或其他版本)数据库恢复到旧版本的SQL Server (2008 R2或更低版本):
让我们详细讨论这两个步骤。
步骤1:在更高版本的SQL Server中生成脚本
在这一步中,我们将使用“生成脚本”向导用于在更高版本的SQL Server Management Studio (SSMS)中生成脚本。例如,在本例中,我们将使用SQL Server 2012 Management Studio。具体步骤如下:
- 在SQL Server 2018 Management Studio (SSMS)中,右键单击数据库,单击任务>生成脚本.

- 在“生成和发布脚本”窗口,单击“下一个”按钮。

- 在“选择对象”屏幕,“整个数据库和所有对象”选项默认为选中。不要更改选项,然后单击“设置脚本选项”选项卡。

- 在“设置脚本选项”界面,单击“高级”按钮。当“高级脚本选项”对话框,执行以下操作:
- 选择SQL Server 2008 R2(或任何您想要的SQL版本)“服务器版脚本”下拉列表。
- 集“模式和数据”随着“脚本的数据类型”;这对于为每个表生成数据至关重要。
- 下“表/视图选项”节,确保“脚本索引”,“脚本主键”,和“脚本触发”设置为“真正.”

- 点击“好吧”.在“设置脚本选项”出现的屏幕,单击“另存为脚本文件”选项,并根据需要重命名脚本文件。点击“下一个”.
注意:复制并粘贴脚本文件存储的位置,因为您需要在较低的SQL版本中打开它。在我们的例子中,位置是路径“C:\Users\charanjeet.kaur\Documents\scriptofBondDB.sql”。 |

- 中的选项验证您的选择“摘要”页,然后点击“下一个”生成脚本。

- 成功生成脚本后,单击“完成”退出“生成和发布脚本”向导。

在继续下一步之前,将脚本文件复制并粘贴到共享网络驱动器中。从网络驱动器将文件拷贝到SQL Server低版本所在的“D:”盘。
步骤2:在SQL Server低版本中运行SQL脚本
这里,我们将连接到较低版本的SQL Server 2008 R2(您可以选择您想要的任何版本),并运行在步骤1中生成的SQL脚本。连接到服务器实例后,执行以下步骤:
- 去“文件””菜单上,单击“打开>文件.

- 在“打开文件”对话框,浏览到2012版SQL脚本的保存位置。接下来,选择脚本文件并单击“开放.”

- 打开脚本后,将“。mdf”和“。ldf”文件修改为SQL Server 2008 R2中数据和日志文件的默认存放位置。

成功执行上述脚本后,右键单击“数据库”并选择“刷新”。的“BondDB”将在较低版本的SQL Server中打开。
这种方法的缺点
虽然上面的方法可以将较新的SQL版本恢复到较旧的版本,但它有一定的缺点:
- 如果较高版本的SQL Server数据库包含较低版本不支持的对象,则不会创建这些对象。在这种情况下,您将需要检查所有生成的脚本,并手动更新每个脚本中的代码,这需要大量的时间和精力。
- 这不是将大型(复杂)数据库恢复到旧版本SQL Server的可行方法。
你还需要知道什么?
您可以将较低版本的SQL Server升级到较新的SQL版本,以便从备份中恢复数据库,而不会出现任何问题。此外,您可以尝试在SQL Server 2012上恢复备份,导出所有数据,然后在SQL Server 2008R2数据库的较低版本上导入它。
在尝试恢复数据库备份时,您可能会发现备份已损坏。在这种情况下,可以使用专业的SQL数据库技术人员,如恒星修复MS SQL技术人员从损坏的备份中提取数据。此外,技术人员软件包括修复数据库和恢复其所有组件的工具。
常见问题
问:我可以使用“复制数据库向导”将数据库从较新的SQL Server版本(2014)恢复到较旧的SQL Server版本(2008或2012)吗?
一个。不可以,您不能使用“复制数据库向导”.
最好的方法是从2014年的机器上生成SQL脚本,并在较低版本的SQL Server上运行它们,正如本文所讨论的那样。