如何手动禁用表的CDC?

Fai*_*aiz 1 sql-server cdc

我为此禁用了CDC之前放了一张桌子。现在,当我重新创建表并尝试启用CDC时,它说捕获实例已经存在。我可以使用其他捕获实例名称,但是需要知道是否仍然有必要手动删除关联的捕获实例。

当我通过SSMS GUI删除表时,它也会删除CDC表。但是这次我使用代码删除了该表,但它没有禁用或删除CDC。因此麻烦了。她的文档讨论了如果错误删除了变更表的修补程序。但是我已经删除了基表。关于如何删除已删除表的此捕获实例的任何线索?

Fil*_*ies 5

这是我在CDC中删除孤立的捕获实例所采取的步骤:

DROP FUNCTION [cdc].[fn_cdc_get_net_changes_dbo_(tablename)]
DROP FUNCTION [cdc].[fn_cdc_get_all_changes_dbo_(tablename)]
Run Code Online (Sandbox Code Playgroud)

然后运行以下命令:

declare @objid int
set @objid = (select object_id from cdc.change_tables where capture_instance = 'your orphaned capture instance')

delete from cdc.index_columns where object_id = @objid
delete from cdc.captured_columns where object_id = @objid
delete from cdc.change_tables where object_id = @objid
Run Code Online (Sandbox Code Playgroud)

届时,您应该能够正常通过sp_cdc_enable_table重新创建捕获实例。