swa*_*eck 5 replication sql-server-2008 sql-server-2000
我正在重新创建(推送)从 SQL 2000 实例到 SQL 2008 实例的事务复制,为了进行数据库迁移,我必须中断该实例。2008 实例既是分发者又是订阅者。
我大约 1/2 的订阅失败了
找不到存储过程“sp_MSins_dboTABLE”。
(更多信息):
命令尝试:如果@@trancount > 0 rollback tran(事务序列号:0x0002A2B400008D19000100000000,命令ID:20)
错误消息:找不到存储过程“sp_MSins_dboTABLE”。(来源:MSSQLServer,错误号:2812) 获取帮助:找不到存储过程“sp_MSins_dboTABLE”。(来源:MSSQLServer,错误号:2812) 获取帮助:我已经找到了几乎所有我能找到的路径,从运行
sp_scriptpublicationcustomprocs
(我在distribution
数据库中执行结果)到删除订阅,然后是发布,然后重新创建他们。
工作订阅是使用相同的方法创建的。
这是我的创建脚本:
https://gist.github.com/3152160
编辑:
更新 --- 我失败的订阅也引发了以下错误(通过 Profiler):
表已经定义了一个主键。
听起来您只需要重新初始化订阅,这将重新创建订阅者上的所有对象。
编辑(由提问者添加):
重新初始化后,如果出现无法找到 CRUD 存储过程的错误,请启动 SQL Profiler 并查找与该过程相关的错误。确保根据复制监视器中的过程名称过滤文本(事实证明,正在执行的命令是;2
后面带有 的存储过程)。
然后EXEC sp_scriptpublicationcustomprocs 'PublicationName'
在发布者上运行以获取创建过程的脚本。在订阅者数据库上创建该过程,包括在组名称之后尝试运行的组编号(例如[sp_MSins_dboTABLE];2
)。这感觉很糟糕,但它会让复制再次健康地运行。