我有一个托管在SQLServer2008R2标准上的生产数据库,通过对生产数据库的订阅将其复制到运行相同版本的SQL服务器的第二个服务器上。subcriber数据库用于对数据运行SQL报表。删除不会被复制,因此报告数据库与每周清理的生产发布数据库相比非常大。
我计划替换承载已发布数据库的服务器,并想知道最佳的操作方法是确保订阅服务器数据库不会丢失任何数据。这是否是以下步骤的合理纲要:
它是这么简单,还是有什么东西我错过了,可以回头咬我?我希望确保用于报告的数据库(订阅数据库)不会丢失任何数据,并将继续从新数据库接收新的复制数据。
谢谢
发布于 2013-07-04 17:33:38
您的计划是正确的,但您只需要为@sync_type指定服务提供商_加载项订阅的复制支持,它假定订阅服务器已经拥有已发布表的架构和初始数据,因此不会初始化,从而跳过删除。
如果您正在使用“新建订阅向导”,则可以通过在“初始化订阅”页面上选择“不初始化”来实现相同的目标。

发布于 2013-07-04 15:28:57
诀窍在于你如何同步。在sp_addarticle存储过程中,@pre_creation_cmd参数的默认设置是删除订阅服务器上的表。这对你来说是个问题。我可以这样做:
我还建议您利用这个机会为您的归档数据实现一个更安全的地方。如果复制本身就会中断(它可以而且确实如此),那么就需要重新初始化,这是一个棘手的问题。如果必须这样做,我将创建一个由复制调用的自定义过程(您可以使用@del_cmd参数将其指定为sp_addarticle),该过程将记录插入到存档表中,然后从活动表中删除。但是有无数的方法可以完成同样的事情。祝好运。
https://serverfault.com/questions/520846
复制相似问题