Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 删除/创建复制表的最佳方法_C#_Sql_Sql Server_Transactional Replication - Fatal编程技术网

C# 删除/创建复制表的最佳方法

C# 删除/创建复制表的最佳方法,c#,sql,sql-server,transactional-replication,C#,Sql,Sql Server,Transactional Replication,我已经设置了SQL Server复制,以便为会计应用程序复制多个表。它使用带有初始快照的事务复制。大约有100个订户 我试图找出更新复制表的最佳方法。现在,当我们执行更新时,最终用户必须运行一个实用程序,该实用程序通过将数据移动到临时表、删除表,然后根据新的表定义重新创建表来升级表。问题是无法删除复制的表 到目前为止,我已经研究并尝试了一些事情。据我所知,为了删除/创建复制表,必须删除文章,但只有在删除所有订阅的情况下才能删除它。这意味着为了升级表,我必须删除所有文章和订阅,然后完全重新创建发布

我已经设置了SQL Server复制,以便为会计应用程序复制多个表。它使用带有初始快照的事务复制。大约有100个订户

我试图找出更新复制表的最佳方法。现在,当我们执行更新时,最终用户必须运行一个实用程序,该实用程序通过将数据移动到临时表、删除表,然后根据新的表定义重新创建表来升级表。问题是无法删除复制的表

到目前为止,我已经研究并尝试了一些事情。据我所知,为了删除/创建复制表,必须删除文章,但只有在删除所有订阅的情况下才能删除它。这意味着为了升级表,我必须删除所有文章和订阅,然后完全重新创建发布

这是一种痛苦,因为这需要相当多的重构。另外,主要的问题是重新复制到所有100个订阅服务器所需的时间。所以我想知道是否有更好的方法来处理删除/创建复制表

谢谢,
Makolyte

我想知道为什么要复制一个频繁更改模式的表。也就是说,你有两个选择

  • 以与复制兼容的方式更改表。看
  • 如果不可能,请从带有sp_dropsubscription的文章中删除订阅者,然后删除带有sp_droparticle的文章。进行表更改,使用sp_addarticle重新添加文章,使用sp_addsubscription重新添加订阅服务器,然后运行快照代理为新添加的文章创建快照

  • 第一个选项需要大量更改旧的转换工具。使用第二个选项,由于快照无效,是否需要重新初始化所有订阅服务器?或者,由于这是事务性复制,它们是否正常?一旦删除订阅服务器,它们都需要重新初始化,因为它们不再订阅发布。