从Publication数据库sys.sp_droparticle和sp_dropsubscription中删除对象

问题描述 投票:0回答:1

SQL Server Admin不是我的强项。所以请在解释时请耐心等待 使用第三方SQL Server 2012 cluster实用程序,Change data capture ( CDC )参与了CDC的努力。为了它的工作复制需要打开,没有复制CDC将无法正常工作。 CDC在数据库Db1中从SQL Server点击了大约2000多个奇数表。其中我们发现大约200多张桌子经过truncateload而不是增量。所以我们从CDC列表中删除了那些,但是由于复制是在DB Level上打开的,我们还需要从publication database中删除这些,以便发生到此异常列表的截断不需要replication关闭DB级别(也就是截断到这些表格和replication可以co -exist。正如众所周知的那样,为了实现截断,我们需要关闭复制。代码是prod所以现在用truncate替换delete不是一个选项,除了十亿行表删除将是昂贵和耗时的事实) 以上是要求。基于此,如果可以设想更好的解决方案,请告诉我 我尝试了什么:

EXEC sys.sp_droparticle @publication = 'pub', @article = 'art', @force_invalidate_snapshot = 1

我得到的错误

Msg 14013, Level 16, State 1, Procedure sp_MSrepl_droparticle, Line 104 [Batch Start Line 2]
This database is not enabled for publication.

另一个SP

DECLARE @subscriber AS sysname;

EXEC sp_dropsubscription @publication = 'AR_PUBLICATION_00010', @article = 'BPA_BRGR_RUL_GRP_R' ,@subscriber=@subscriber

Msg 14013, Level 16, State 1, Procedure sp_MSrepl_dropsubscription, Line 55 [Batch Start Line 1]
This database is not enabled for publication.

但是使用GUI我可以取消选中我不想要的那张publication表。 (右键单击发布 - >属性 - >文章 - >选中/取消选中要排除的内容)。我没有任何subscription只是有一个出版物。 无论我通过GUI运行的代码是什么,我都可以def。运行T-SQL但是我不知道它运行的代码是什么?如何使用脚本方法完成此操作。我有200多个表来处理和取消检查em 1 by 1没有帮助

sql-server tsql replication database-replication merge-replication
1个回答
1
投票

无论我通过GUI运行的代码是什么,我都可以def。运行T-SQL但是我不知道它运行的代码是什么?如何使用脚本方法完成此操作。

SSMS没有特殊的API。它所做的一切,都是通过TSQL实现的。因此,使用SQL事件探查器来查看SSMS的功能,并捕获脚本。

© www.soinside.com 2019 - 2024. All rights reserved.