如果空间是一个考虑因素,您始终可以将 CDC 表分配给可能存在于不同服务器上的不同文件组。你可以这样做:
ALTER DATABASE YourDatabase
ADD FILEGROUP [cdc_ChangeTables];
go
--this step requires going on to somewhere on your hard drive and creating a folder
ALTER DATABASE YourDatabase
ADD FILE ( NAME = N'cdc_ChangeTables',
FILENAME = N'E:\NameOfFolderYouSetUp\YourDatabase_cdc_ChangeTables.mdf',
SIZE = 1048576KB,
FILEGROWTH = 102400KB )
TO FILEGROUP [cdc_ChangeTables];
GO
然后,当您要设置 CDC 表时,请将它们指向该文件组:
EXEC sys.sp_cdc_enable_table
@source_schema = N'dbo',
@source_name = N'TableYouWantToCapture',
@role_name = N'cdc_admin',
@filegroup_name = N'cdc_ChangeTables', --this is where you name the filegroup from previous step
@supports_net_changes = 1,
@capture_instance = N'dbo_TableYouWantToCapture',
@captured_column_list = 'ColumnName1, ColumnName2'; --comma-delimited list of column names
GO
如果你只想查询更新/删除,你可以像这样使用系统函数:
SELECT *
FROM cdc.fn_cdc_get_all_changes_dbo_TableYouWantToCapture(@from_lsn, @to_lsn, N'all update old')
WHERE __$operation IN (1,3,4)