设置:现有的 SQL2008 合并复制方案。一个大型服务器数据库,包括视图和存储过程,被复制到客户端机器。
我在做什么:
- 向数据库中添加新表
- 标记要复制的新表(使用
SP_AddMergeArticle
) - 改变一个视图(它已经是复制内容的一部分)被更新以包括来自这个新表的字段(它连接到现有视图中的表)。类似地更新存储过程。
问题:表被复制到客户端机器,但视图没有更新。存储过程也不会更新。
无用的解决方法:SP_AddMergeArticle
如果我在调用之后和更新 view/SP 之前运行快照代理,视图和存储过程的更改都会正确复制到客户端。
更大的问题:我在一个事务中运行一个数据库脚本列表,作为一个更大进程的一部分。快照代理不能在事务期间运行,如果我中断事务(例如,通过在多个事务中运行脚本),我将失去在失败时回滚更改的能力。
有没有人有什么建议?似乎我必须遗漏一些明显的东西,因为我不明白为什么视图/存储过程的更改无论如何都不会复制,无论新表发生了什么。