【问题标题】:How to restore SQL Server 2014 backup in SQL Server 2008如何在 SQL Server 2008 中恢复 SQL Server 2014 备份
【发布时间】: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 中是否还有我可能丢失的其他内容。

【问题讨论】:

  • 这样的备份永远不可能倒退 - 请参阅这个相关问题:stackoverflow.com/questions/545316
  • 因此,当他们为 2008 年的产品编写代码时,他们必须已经(完全)意识到五年后数据库结构将发生的变化,并编写代码以处理这样的结构?
  • 如果您没有使用过 sql server 2012 或 sql server 2014 功能,那么您可以尝试从 management studio 获取数据库属性。单击选项然后将兼容性级别更改为 Sql server 2008 (100)。然后备份您的数据库并尝试恢复它

标签: sql-server sql-server-2008 sql-server-2005 sql-server-2008-r2 sql-server-2014


【解决方案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 DiffData 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 中,打开它并最后一个重要步骤: 您必须更改 mdfldf 位置!!

这就是大家,快乐的 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://stackoverflow.com/a/27777823/2127493

    【讨论】:

      【解决方案7】:

      如果您同时拥有这两个版本,则可以创建从新到旧的合并复制。在较新的 sql server 上创建合并发布,在旧版本上创建订阅。初始化订阅后,您可以创建具有相同结构和相同内容但使用旧版本的数据库备份,并将其还原到旧目标服务器上。 您也可以将此方法与 sql server 2016 一起使用以定位 2014、2012 或 2008。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-22
        • 1970-01-01
        • 2010-10-07
        • 2014-08-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多