SQL Server Admin不是我的强项。所以请在我解释的同时忍耐
SQL Server 2012 cluster
使用第三方Change data capture ( CDC )
实用工具参与CDC
的工作。为了使其正常工作,需要打开复制,而没有复制CDC
将无法工作。 CDC
在数据库Db1中从SQL Server
中抽出2000多个奇数表。从中我们发现,大约200多个表经历了truncate
和load
而不是增量。因此,我们从CDC列表中删除了这些文件,但是由于复制是在数据库级别上启用的,因此我们还需要从publication database
中删除这些文件,这样,在此异常列表中发生的截断就不需要关闭数据库级别的replication
截断到这些表,replication
可以共存。众所周知,要发生截断,我们需要关闭复制。代码处于生产过程中,因此用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运行的任何代码,我都可以定义。通过T-SQL运行,但是我不知道运行的是什么代码?如何使用脚本方法完成此任务。我有200多个表格要处理,并且不按1取消选择em
答案 0 :(得分:1)
无论我在上面通过GUI运行的任何代码,我都可以定义。通过T-SQL运行,但是我不知道运行的是什么代码?如何使用脚本方法完成此任务。
SSMS没有特殊的API。它所做的一切,都是通过TSQL完成的。因此,请使用SQL事件探查器观察SSMS的功能并捕获脚本。