最近某項目突然要增加數據的獲取,但是不能改程序、也沒有同步的只讀庫,只好使用CDC來進行嘗試。
CDC的啟用和停止全部用SQL實現,在這里給出主要的SQL步驟:
/****** Script for SelectTopNRows command from SSMS ******/ --------------------------------(1.1)啟動數據庫CDC USE TestDB GO EXECUTE sys.sp_cdc_enable_db; GO --------------------------------(1.2)有錯誤15517則執行 ALTER AUTHORIZATION ON DATABASE::[TestDB] TO [sa] ---------------------------------(1.3)查看是否啟用數據庫CDC SELECT is_cdc_enabled,CASE WHEN is_cdc_enabled=0 THEN 'CDC功能禁用'ELSE 'CDC功能啟用'END [描述] FROM sys.databases WHERE [name]='TestDB' -------------------------------- (2.1)啟動數據表CDC---- USE TestDB GO EXEC sys.sp_cdc_enable_table @source_schema= 'dbo', @source_name = 'TestTable', @role_name = NULL GO ----------------------------------(2.2)查看數據表CDC是否啟用---- SELECT name , is_tracked_by_cdc , CASE WHEN is_tracked_by_cdc = 0 THEN 'CDC功能禁用' ELSE 'CDC功能啟用' END 描述 FROM sys.tables WHERE OBJECT_ID= OBJECT_ID('TestTable') ----------------------------------(3)查詢數據------ SELECT TOP 1000 * FROM [TestDB].[cdc].[dbo_TestTable_CT];--此表為默認生成 ----------------------------------(4) 關閉表CDC---- USE TestDB go EXECUTE sys.sp_cdc_disable_table @source_schema = 'dbo', @source_name = 'TestTable', @capture_instance = 'dbo_TestTable' go ----------------------------------(5)關閉數據庫CDC---- USE TestDB; GO EXECUTE sys.sp_cdc_disable_db; GO
參考文章:
https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2008/bb510702(v=sql.100)
https://blog.csdn.net/yenange/article/details/49636215
https://blog.csdn.net/dba_huangzj/article/details/8130448
https://www.cnblogs.com/lyhabc/p/3383484.html