【问题标题】:Is the RESTORE process dependent on schema?RESTORE 过程是否依赖于模式?
【发布时间】:2011-01-29 15:48:36
【问题描述】:

假设我有两个数据库实例:

InstanceA - Production server
InstanceB - Test server  

我的工作流程是首先将新的架构更改部署到 InstanceB,对其进行测试,然后将它们部署到 InstanceA

因此,在任何时候,实例架构关系都如下所示:

InstanceA - Schema Version 1.5
InstanceB - Schema Version 1.6 (new version being tested)

我工作流程的另一部分是尽可能保持InstanceB 中的数据最新。为了实现这一点,我将 InstanceA 的数据库备份并将它们应用(恢复)到 InstanceB

我的问题是,架构版本如何影响恢复过程?

我知道我能做到:

Backup InstanceA - Schema Version 1.5
Restore to InstanceB - Schema Version 1.5

但是我可以这样做吗?

Backup InstanceA - Schema Version 1.5
Restore to InstanceB - Schema Version 1.6 (new version being tested)

如果没有,失败会是什么样子?

如果是,架构更改的类型是否重要?

例如,如果 Schema Version 1.6Schema Version 1.5 的不同之处在于仅更改了 storec proc,我想这种类型的架构更改不应影响恢复过程。另一方面,如果 Schema Version 1.6Schema Version 1.5 的表定义不同(例如,附加列),我认为这会影响恢复过程。

我希望我已经说得够清楚了。

提前感谢您的任何意见!

【问题讨论】:

    标签: sql-server schema backup restore


    【解决方案1】:

    不,还原不查看架构,它只是将数据文件还原为原样,因此还原后您将得到架构 1.5。它会覆盖已经存在的所有内容。

    您最好先进行数据刷新恢复,然后应用 1.6 架构更改。

    【讨论】:

    • 这就是我们在脚本中执行所有操作(甚至是测试记录或登录或查找值的数据输入)并将它们保存在源代码管理中的原因之一。在使用 prod 数据(我们经常这样做)恢复 dev 后,很容易运行所有尚未部署到 prod 的脚本。
    • 同意。此外,使用质量工具将有所帮助。我使用 ER/Studio 来维护更改,它负责将数据从旧版本的表传输到新版本。
    【解决方案2】:

    除非您只对特定文件组进行恢复,否则您的恢复将包括数据和架构。对数据库进行完全恢复将包括数据库中的所有模式,并将完全替换数据库。如果您要创建文件组并将特定表放入文件组中,您可以只恢复您想要的那些文件组 - 并且只包括表的数据和架构(以及您放入文件组中的任何其他内容 - 例如索引、物化视图等)

    您真正应该关注的是架构和数据比较工具。 Redgate、ApexSql Compare、AdeptSQL 或 Visual Studio Database Edition 之类的东西都可以很好地处理您描述的场景。我个人使用 VS 数据库版本,因为我们通过金牌合作伙伴许可证获得它,并且喜欢它。它完全符合您的要求,并且做得很好。我过去也使用过所有其他的,并且会推荐其中的任何一个。他们中的大多数都有 30 天的试用版 - 您应该下载几个并在您当前的情况下试驾一下。

    【讨论】:

    • 嗨,斯科特,感谢您的意见。当您说还原包括数据和架构时,架构是否还包括存储过程、视图、用户、登录等,还是仅包括表的架构?
    • 如果您正在执行完整的数据库恢复,它包括所有架构,包括视图、存储过程、UDF 等。如果您要使用单独的文件组,您可以恢复特定的表 - 这将包括数据以及您放入这些文件组中的表的架构。我会更新我的答案以澄清。
    猜你喜欢
    • 1970-01-01
    • 2019-08-23
    • 2018-07-22
    • 1970-01-01
    • 2015-09-22
    • 2015-01-09
    • 2017-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多