可以在 SQL Server 2012 上恢复 SQL Server 2014 的备份吗?
Posted
技术标签:
【中文标题】可以在 SQL Server 2012 上恢复 SQL Server 2014 的备份吗?【英文标题】:Possible to restore a backup of SQL Server 2014 on SQL Server 2012? 【发布时间】:2014-09-22 10:40:12 【问题描述】:我知道您不能(至少不容易)在 SQL Server 2008 上恢复 SQL Server 2012 备份。但是它如何从 SQL Server 2014 到 SQL Server 2012 工作?
在数据库级别,可以将兼容模式调整为任何其他 SQL Server 版本。
这有什么帮助或工作?它只会禁止 2014 年的功能吗?
老实说,我已经尝试恢复备份,但是 2012 无法识别数据文件,所以我无法单击 ok Button
启动恢复过程。
我错过了一些重要的选择吗?
【问题讨论】:
How to restore SQL Server 2014 backup in SQL Server 2008的可能重复 我当然看到了 2014 到 2008 年的问题,但我认为这是不同的 【参考方案1】:您不能这样做 - 您不能将数据库从 较新版本的 SQL Server 附加/分离或备份/恢复到 较旧版本 - 内部文件结构差异太大,无法支持向后兼容性。在 SQL Server 2014 中仍然如此 - 您无法在另一个 2014 机器(或更新)以外的任何设备上恢复 2014 备份。
您可以通过以下方式解决此问题
在所有机器上使用相同版本的 SQL Server - 然后您可以轻松地在实例之间备份/恢复数据库
否则,您可以在 SQL Server Management Studio (Tasks > Generate Scripts
) 或使用第三方工具
或者您可以使用 Red-Gate 的 SQL Compare 和 SQL 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= “改变表?检查所有约束”去以上是关于可以在 SQL Server 2012 上恢复 SQL Server 2014 的备份吗?的主要内容,如果未能解决你的问题,请参考以下文章
我们如何分配权限来设置 SQL Server Reporting Services
在 SQL Server 2012 上还原 SQL Server 2000 备份