4

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

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具有不同的表定义(例如,附加列)不同,我认为这会影响恢复过程。

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

提前感谢您的任何意见!

4

2 回答 2

8

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

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

于 2010-03-19T21:39:51.137 回答
4

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

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

于 2010-03-19T21:42:43.830 回答