Sql server 还原过程是否依赖于架构?

Sql server 还原过程是否依赖于架构?,sql-server,schema,backup,restore,Sql Server,Schema,Backup,Restore,假设我有两个数据库实例: InstanceA - Production server InstanceB - Test server 我的工作流程是首先将新的架构更改部署到InstanceB,测试它们,然后将它们部署到InstanceA 因此,在任何时候,实例模式关系如下所示: InstanceA - Schema Version 1.5 InstanceB - Schema Version 1.6 (new version being tested) 我的工作流程的另一部分是使Inst

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

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.6
Schema Version 1.5
不同,只是更改了storec proc,我认为这种模式更改不应该影响恢复过程。另一方面,如果
Schema Version 1.6
Schema Version 1.5
具有不同的表定义(例如,一个附加列),我认为这将影响恢复过程

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


提前感谢您的任何意见

不,恢复不会查看模式,它只是恢复数据文件的原样,因此在恢复后您将使用模式1.5。它将覆盖已经存在的内容


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

除非您只执行特定文件组的还原,否则还原将同时包括数据和架构。对数据库执行完全还原将包括数据库中的所有架构和属性,并将完全替换数据库。如果要创建文件组并在文件组中放置特定的表,则可以只还原所需的文件组,其中只包括表的数据和模式(以及文件组中放置的任何其他内容,如索引、物化视图等)


您真正应该看到的是模式和数据比较工具。诸如Redgate、apexsqlcompare、AdeptSQL或visualstudio数据库版之类的东西都可以在您描述的场景中完成出色的工作。我个人使用VS数据库版,因为我们通过黄金合作伙伴许可证获得了它,并且非常喜欢它。它正是你想要的,并且做得很好。我过去也用过所有其他的,我会推荐其中任何一种。大多数都有30天的试用版-您应该下载一对,并在当前场景中对其进行试驾。

这就是我们在脚本中执行所有操作(甚至测试记录、登录或查找值的数据输入)并将其保存在源代码管理中的原因之一。在使用prod数据恢复dev之后(我们经常这样做),运行所有尚未部署到prod.com的脚本是很容易的。此外,使用质量工具也会有所帮助。我使用ER/Studio来维护更改,它负责将数据从旧版本的表传输到新版本。当您说恢复包括数据和模式时,模式是否还包括存储的进程、视图、用户、登录名等,还是只包括表的模式?如果您正在执行完整的数据库恢复,它包括所有模式,包括视图、存储过程、自定义项等。如果要使用单独的文件组,您可以恢复特定的表,其中包括您放入这些文件组中的表的数据和模式。我会更新我的答案来澄清。