如何在 SQL Server 2008 中恢复 SQL Server 2014 备份
Posted
技术标签:
【中文标题】如何在 SQL Server 2008 中恢复 SQL Server 2014 备份【英文标题】:How to restore SQL Server 2014 backup in SQL Server 2008 【发布时间】:2013-07-18 14:43:03 【问题描述】:SQL Server 2014 在这方面有什么变化吗?我看过这篇帖子Is it possible to restore Sql Server 2008 backup in sql server 2005,我知道这不可能作为 2012 -> 2008 的场景,但我想知道 MS 是否对 2014 版本进行了任何更改。
我们正在评估 2014 版本,并且我们有一个相当大的数据库正在测试中。我们想将该数据库的备份恢复到 SQL Server 2008,因为该物理机有更多空间、RAM……
我在尝试恢复备份时收到标准错误消息,但我想知道 SQL Server 2014 中是否还有我可能丢失的其他内容。
【问题讨论】:
这样的备份永远不可能倒退 - 请参阅这个相关问题:***.com/questions/545316 因此,当他们为 2008 年的产品编写代码时,他们必须已经(完全)意识到五年后数据库结构将发生的变化,并编写代码以处理这样的结构? 如果您没有使用过 sql server 2012 或 sql server 2014 功能,那么您可以尝试从 management studio 获取数据库属性。单击选项然后将兼容性级别更改为 Sql server 2008 (100)。然后备份您的数据库并尝试恢复它 相关:superuser.com/questions/468578/… 【参考方案1】:不,这是不可能的。 Stack Overflow 希望我用更长的答案来回答,所以我会再说不。
文档:https://docs.microsoft.com/en-us/sql/t-sql/statements/backup-transact-sql#compatibility
由较新版本的 SQL Server 创建的备份不能 在早期版本的 SQL Server 中恢复。
【讨论】:
如果您分享一些指向 MS 文档的链接会更好 软件公司很少提供他们生产的产品没有提供的功能的文档。 "Stack Overflow 希望我用更长的答案来回答,所以我会再次拒绝。" ;) @DaveMarkle 但有时他们会这样做;)。【参考方案2】:据我所知并非如此,但您可以尝试以下几件事。
第三方工具:在2008实例上创建空数据库,并使用ApexSQL Diff和Data Diff等第三方工具来同步模式和表。
只需在试用模式下使用这些(或市场上的任何其他产品,如 Red Gate、Idera、Dev Art,还有很多类似的)即可完成工作。
生成脚本:转到任务 -> 生成脚本,选择选项来编写数据脚本并在 2008 实例上执行它。工作得很好,但请注意脚本顺序是您必须小心的事情。默认情况下,脚本未排序以考虑依赖关系。
【讨论】:
此工具不支持 sql server 2014 :( 您可以使用从 Sql Server 2014 生成脚本。请务必仔细查看/编辑脚本。我只是这样做了,并且必须编辑创建数据和日志文件的路径,并删除用户的创建(我可以在生成脚本时将其作为一个选项禁止)。 一个用于同步数据库的开源选项是OpenDBDiff。【参考方案3】:这是一个相当老的帖子,但我今天不得不这样做。我只是右键单击 SQL2014 中的数据库并选择导出数据选项,这有助于我将数据移动到 SQL2012。
【讨论】:
这只会从视图和表中复制数据;如果这就是你想要的,那很好,但它与使用模式、存储过程等恢复数据库不同。 使用任务 > 生成脚本以导出包含架构、存储过程等的数据库。【参考方案4】:相当老的问题......但我今天遇到了同样的问题并用脚本解决了,有点慢和复杂但有效。我这样做了:
让我们从源数据库(SQL 2014)开始,右键单击要备份的数据库 -> 生成脚本 -> “编写整个数据库和所有数据库对象的脚本”(或者您可以选择只有一些表,如果你想要)-> 最重要的步骤是在“Set Scripting Options”选项卡中,在这里您必须单击“Advanced”并查找选项“服务器版本脚本”,在我的情况下,我可以从 SQL 2005 中选择所有内容,还要注意选项“脚本的数据类型”我建议“Schema and data”,还有 Script Triggers 和 Script Full-text Indexes(如果需要,默认为 false),最后点击 ok 和 next。应该是这样的:
现在将您生成的脚本转移到您的 SQL 2008 中,打开它并最后一个重要步骤: 您必须更改 mdf 和 ldf 位置!!
这就是大家,快乐的 F5! :D
【讨论】:
它也不起作用。在一个脚本中它失败了:( @Moeez 它给你什么样的错误?您还根据新的服务器文件路径更改了 mdf 和 ldf 位置?【参考方案5】:不,我想您无法将数据库从较高版本恢复到较低版本,您可以使数据流 b/w,即您可以编写脚本。 http://www.mssqltips.com/sqlservertip/2810/how-to-migrate-a-sql-server-database-to-a-lower-version/
【讨论】:
【参考方案6】:请使用 SQL Server Integration Services(传输数据库任务)中的 SQL Server Data Tools,如下所示:https://***.com/a/27777823/2127493
【讨论】:
【参考方案7】:如果您同时拥有这两个版本,则可以创建从新到旧的合并复制。在较新的 sql server 上创建合并发布,在旧版本上创建订阅。初始化订阅后,您可以创建具有相同结构和相同内容但使用旧版本的数据库备份,并将其还原到旧目标服务器上。 您也可以将此方法与 sql server 2016 一起使用以定位 2014、2012 或 2008。
【讨论】:
以上是关于如何在 SQL Server 2008 中恢复 SQL Server 2014 备份的主要内容,如果未能解决你的问题,请参考以下文章