數(shù)據(jù)庫環(huán)境:
1艘绍、SQLServer 2008R2
2仆抵、SQLServer 代理打開
一巩割、新建一個數(shù)據(jù)庫
創(chuàng)建數(shù)據(jù)庫 Incremental_DB
image.png
二籽前、創(chuàng)建倆張測試表
--創(chuàng)建用戶表
CREATE TABLE [dbo].[Person](
[Id] [INT] IDENTITY(1,1) NOT NULL,
[Name] [NVARCHAR](120) NULL,
[Age] [INT] NULL,
CONSTRAINT [PK_Demo] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
--創(chuàng)建部門表
CREATE TABLE [dbo].[Department](
[Id] [INT] IDENTITY(1,1) NOT NULL,
[Name] [NVARCHAR](50) NULL,
CONSTRAINT [PK_Department] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
三亭珍、實現(xiàn)數(shù)據(jù)變更捕獲
一敷钾、對目標庫顯式啟用CDC
USE Incremental_DB
GO
EXECUTE sys.sp_cdc_enable_db;
GO
查看是否啟用CDC
SELECT is_cdc_enabled,CASE WHE is_cdc_enabled=0 THEN 'CDC功能禁用'ELSE 'CDC功能啟用'END [描述]
FROM sys.databases
WHERE [name]='Incremental_DB'
創(chuàng)建成功后,會在測試庫自動添加CDC用戶和架構(gòu)
image.png
二肄梨、對目標庫數(shù)據(jù)表顯式啟用CDC
USE Incremental_DB
EXECUTE sys.sp_cdc_enable_table
@source_schema = N'dbo'--架構(gòu)名稱
, @source_name = N'Department'--表名稱
, @role_name = 'cdc_Admin'--會自動生成自定義 'cdc_Admin' 角色 如果不想控制訪問角色阻荒,則@role_name必須顯式設(shè)置為null
, @capture_instance=NULL
EXECUTE sys.sp_cdc_enable_table
@source_schema = N'dbo'--架構(gòu)名稱
, @source_name = N'Person'--表名稱
, @role_name = 'cdc_Admin'--會自動生成自定義 'cdc_Admin' 角色 如果不想控制訪問角色,則@role_name必須顯式設(shè)置為null
, @capture_instance=NULL
語句執(zhí)行成功后在系統(tǒng)表中生成倆張變化表
新增表.png
數(shù)據(jù)庫可編程性中增加倆個函數(shù)
新增函數(shù).png
同時SQLServer 代理中新增倆個作業(yè)
- capture(捕獲作業(yè))
-
clean(清理作業(yè))
新增作業(yè).png
如果出現(xiàn)如下錯誤峭范,請參考上一篇文章CDC注意事項第三點
image.png
驗證數(shù)據(jù)表是否啟用CDC
USE Incremental_DB
--查看是否已啟用:
SELECT name ,
is_tracked_by_cdc ,
CASE WHEN is_tracked_by_cdc = 0 THEN 'CDC功能禁用'
ELSE 'CDC功能啟用'
END 描述
FROM sys.tables
WHERE OBJECT_ID IN(OBJECT_ID('Person'),OBJECT_ID('Department'))
四财松、禁用數(shù)據(jù)庫或數(shù)據(jù)表CDC功能
禁用數(shù)據(jù)表CDC
--禁用人員表CDC功能
EXECUTE sys.sp_cdc_disable_table
@source_schema = N'dbo',
@source_name = N'Person',
@capture_instance = 'dbo_Person'
禁用后系統(tǒng)表中原來的dbo_Person_CT表被刪除,函數(shù)刪除等
禁用后系統(tǒng)表截圖.png
禁用數(shù)據(jù)庫CDC
EXEC sys.sp_cdc_disable_db