Ale*_*lan 5 sql-server disaster-recovery
假设我有一个手写脚本,它执行一系列架构更改,例如:(从空气中提取):
并且,在运行这个之后,我们发现我们需要恢复到整个脚本运行之前。
这可能吗?
在此期间,数据将一直流入。我们不能丢弃新数据(即:我们无法恢复整个数据库的备份),但我们不关心来自 2 个新列的任何数据.
我正在寻找比DROP COLUMN每次进行架构更改时编写显式“撤消”脚本(例如,语句和旧过程定义)更好的解决方案。
有很多很好的模式比较工具。我想到的是 Redgate Schema Compare 和 SQL Server Data Tools for Visual Studio 两个(我不隶属于这两个工具)。
在开发环境中,创建两个与当前“实时”模式匹配的数据库。仅将您的更改部署到一个数据库。使用该工具将更新的数据库与当前数据库进行比较。将生成的脚本命名为“Deploy.sql”或类似的脚本。现在使用该工具比较当前与更新的内容 - 注意顺序已切换。调用生成的脚本“Rollback.sql”。
前滚和回滚脚本的一个重要方面是它们应该是幂等的,即针对同一数据库运行脚本一次或多次应该产生相同的输出。一般来说,这需要很多“如果存在..”语句。这些工具可以为您生成这些。
如果空间紧张,您可以使用实际的生产数据库作为“当前”数据库。我宁愿不这样做,因为(小的)额外负载和(小的)错误风险。
| 归档时间: |
|
| 查看次数: |
941 次 |
| 最近记录: |