首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >切换Server复制发布

切换Server复制发布
EN

Server Fault用户
提问于 2013-07-04 12:37:13
回答 2查看 195关注 0票数 1

我有一个托管在SQLServer2008R2标准上的生产数据库,通过对生产数据库的订阅将其复制到运行相同版本的SQL服务器的第二个服务器上。subcriber数据库用于对数据运行SQL报表。删除不会被复制,因此报告数据库与每周清理的生产发布数据库相比非常大。

我计划替换承载已发布数据库的服务器,并想知道最佳的操作方法是确保订阅服务器数据库不会丢失任何数据。这是否是以下步骤的合理纲要:

  1. 将最新备份的副本从旧生产数据库还原到新服务器。
  2. 使用与旧数据库相同的设置发布此新数据库。
  3. 取消订阅(或任何用于中断复制的适当术语)报告订阅数据库从旧的已发布数据库
  4. 订阅报告数据库到新发布。

它是这么简单,还是有什么东西我错过了,可以回头咬我?我希望确保用于报告的数据库(订阅数据库)不会丢失任何数据,并将继续从新数据库接收新的复制数据。

谢谢

EN

回答 2

Server Fault用户

回答已采纳

发布于 2013-07-04 17:33:38

您的计划是正确的,但您只需要为@sync_type指定服务提供商_加载项订阅的复制支持,它假定订阅服务器已经拥有已发布表的架构和初始数据,因此不会初始化,从而跳过删除。

如果您正在使用“新建订阅向导”,则可以通过在“初始化订阅”页面上选择“不初始化”来实现相同的目标。

票数 2
EN

Server Fault用户

发布于 2013-07-04 15:28:57

诀窍在于你如何同步。在sp_addarticle存储过程中,@pre_creation_cmd参数的默认设置是删除订阅服务器上的表。这对你来说是个问题。我可以这样做:

  1. 做任何要做的事情,将已发布的数据库移动到新服务器。这可能包括中断复制(故意)。
  2. 在订阅服务器上,重命名所有表(或将它们放到另一个架构中)。作为复制重新初始化的一部分,这将保护它们不受任何灾难的影响。或者,您可以重命名数据库,以便创建一个新的数据库作为订阅服务器。
  3. 重新生成发布和订阅
  4. 让发布同步
  5. 对于设置了此归档条件的每个表,请从步骤2中将表移动到订阅服务器的“活动”表中不存在的位置插入数据。本质上,在每种情况下,保存的表和活动的表之间都有一个左联接。

我还建议您利用这个机会为您的归档数据实现一个更安全的地方。如果复制本身就会中断(它可以而且确实如此),那么就需要重新初始化,这是一个棘手的问题。如果必须这样做,我将创建一个由复制调用的自定义过程(您可以使用@del_cmd参数将其指定为sp_addarticle),该过程将记录插入到存档表中,然后从活动表中删除。但是有无数的方法可以完成同样的事情。祝好运。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/520846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档