禁用变更数据捕获

本主题说明如何对数据库和表禁用变更数据捕获。

对数据库禁用变更数据捕获

sysadmin 固定服务器角色的成员可以在数据库上下文中运行存储过程 sys.sp_cdc_disable_db (Transact-SQL) 以对数据库禁用变更数据捕获。在禁用数据库之前不必禁用各个表。禁用数据库会删除所有关联的变更数据捕获元数据,包括 cdc 用户、架构和变更数据捕获作业。但是,任何由变更数据捕获创建的访问控制角色不会被自动删除,而是必须将其显式删除。若要确定数据库是否启用了此项功能,请在 sys.databases 目录视图中查询 is_cdc_enabled 列。

当删除启用了变更数据捕获的数据库时会自动删除变更数据捕获作业。

有关禁用数据库的示例,请参阅 Disable Database for Change Data Capture 模板。

重要说明重要提示

若要在 SQL Server Management Studio 中找到模板,请转至“视图”,单击“模板资源管理器”,然后单击“SQL Server 模板”“变更数据捕获”为子文件夹,在该文件夹中您将找到本主题中提到的所有模板。SQL Server Management Studio 工具栏上还有一个“模板资源管理器”图标。

-- =================================

-- Disable Database for Change Data Capture 模板

-- =================================

USE MyDB
GO

EXEC sys.sp_cdc_disable_db
GO

对表禁用变更数据捕获

db_owner 固定数据库角色的成员可以通过使用存储过程 sys.sp_cdc_disable_table 为各个源表删除捕获实例。若要确定当前是否已对某个源表启用了变更数据捕获,请在 sys.tables 目录视图中检查 is_tracked_by_cdc 列。如果在禁用发生后没有对数据库启用任何表,则还会删除变更数据捕获作业。

如果删除了启用变更数据捕获的表,则会自动删除与该表关联的变更数据捕获元数据。

有关禁用表的示例,请参阅 Disable a Capture Instance for a Table 模板。

-- ===============================================

-- Disable a Capture Instance for a Table 模板

-- ===============================================

USE MyDB
GO

EXEC sys.sp_cdc_disable_table
@source_schema = N'dbo',
@source_name   = N'MyTable',
@capture_instance = N'dbo_MyTable'
GO