我刚刚使用以下脚本恢复了我的数据库,
USE [master]
GO
RESTORE DATABASE [MyDB]
FROM DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL14.SQLSTANDARD\MSSQL\Backup\mydb.bak' WITH FILE = 1,
NOUNLOAD, REPLACE, STATS = 5, KEEP_CDC
GO
USE MyDB
GO
EXECUTE sys.sp_cdc_add_job 'capture';
GO
EXECUTE sys.sp_cdc_add_job 'cleanup';
GO
然后我查了CDC,
select is_tracked_by_cdc,name from sys.tables order by is_tracked_by_cdc desc
select is_cdc_enabled,name from sys.databases order by is_cdc_enabled desc
为我的表启用了 CDC。然后我运行更新脚本,
UPDATE MyTable SET Name='SomeName' where id=1
但发现cdc表中没有记录,
SELECT * FROM [cdc].[dbo_MyTable_CT]
我已安装最新的累积更新 (CU31)。
确保 SQL 代理中存在用于数据库的 CDC 捕获和清理的作业。
它们看起来像这样:
当然,它们必须被启用
另外,尝试使用此链接中的命令禁用并重新启用 CDC 的数据库和表:
https://learn.microsoft.com/en-us/sql/relational-databases/track-changes/enable-and-disable-change-data-capture-sql-server?view=sql-server-ver16