【问题标题】:Possible to restore a backup of SQL Server 2014 on SQL Server 2012?可以在 SQL Server 2012 上恢复 SQL Server 2014 的备份吗?
【发布时间】:2014-09-22 10:40:12
【问题描述】:

我知道您不能(至少不容易)在 SQL Server 2008 上恢复 SQL Server 2012 备份。但是它如何从 SQL Server 2014 到 SQL Server 2012 工作?

在数据库级别,可以将兼容模式调整为任何其他 SQL Server 版本。

这有什么帮助或工作?它只会禁止 2014 年的功能吗?

老实说,我已经尝试恢复备份,但是 2012 无法识别数据文件,所以我无法单击 ok Button 启动恢复过程。

我错过了一些重要的选择吗?

【问题讨论】:

标签: sql sql-server sql-server-2012 compatibility sql-server-2014


【解决方案1】:

不能这样做 - 您不能将数据库从 较新版本的 SQL Server 附加/分离或备份/恢复到 较旧版本 - 内部文件结构差异太大,无法支持向后兼容性。在 SQL Server 2014 中仍然如此 - 您无法在另一个 2014 机器(或更新)以外的任何设备上恢复 2014 备份。

您可以通过以下方式解决此问题

  • 在所有机器上使用相同版本的 SQL Server - 然后您可以轻松地在实例之间备份/恢复数据库

  • 否则,您可以在 SQL Server Management Studio (Tasks > Generate Scripts) 或使用第三方工具

  • 或者您可以使用 Red-Gate 的 SQL CompareSQL Data Compare 等第三方工具在源和目标之间进行“差异化”,根据这些差异生成更新脚本,然后在目标平台;这适用于不同的 SQL Server 版本。

兼容模式设置仅控制您可以使用哪些 T-SQL 功能 - 这有助于防止意外使用其他服务器中不可用的新功能。但它确实不会更改 .mdf 文件的内部文件格式 - 这是 NOT 解决该特定问题的解决方案 - 没有从旧实例上的新版本 SQL Server。

【讨论】:

  • 是否可以安全地假设 2016 年与 2014 年相同?我的意思是 2016 备份不兼容 2014 服务器上的恢复,而 2016 服务器可以从 2014 服务器恢复备份。
【解决方案2】:

当然可以...在源选项中使用导出向导使用 SQL SERVER NATIVE CLIENT 11,稍后您的源服务器 ex.192.168.100.65\SQLEXPRESS 下一步选择您的新目标服务器 ex.192.168.100.65\SQL2014

请确保使用正确的实例并相互连接

只需注意存储过程必须重新编译

【讨论】:

  • 技术上不是“恢复备份”,但它确实实现了将数据从服务器[新]移动到服务器[旧]的目标。
  • 开发环境的好“解决方法”。我想将数据库从 2016 年迁移到 2014 年,并且不想升级其他实例或花费太多时间迁移数据。这个技巧很完美。
  • 要找到向导,请单击 SSMS 中的数据库,选择任务,然后选择导出数据。
  • 稍微扩展一下...当我刚刚使用导出数据时,我丢失了所有索引、约束等。我很幸运地为 2014 年数据库中的所有对象生成了脚本,然后在 2012 服务器上运行这些。然后我禁用了所有约束,并运行导出数据以将所有数据复制到新的 db shell。请记住从导出数据向导中的选项启用身份插入。还记得在之后启用约束。
  • -- 禁用约束 EXEC sp_MSforeachtable @command1="ALTER TABLE ? NOCHECK CONSTRAINT ALL" GO --- 启用约束 EXEC sp_MSforeachtable @command1="ALTER TABLE ? ENABLE TRIGGER ALL" GO EXEC sp_MSforeachtable @command1= “改变表?检查所有约束”去
猜你喜欢
  • 2014-08-15
  • 2015-03-02
  • 2013-07-18
  • 2014-09-21
  • 1970-01-01
  • 2013-01-25
  • 1970-01-01
  • 2010-10-07
  • 1970-01-01
相关资源
最近更新 更多