本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Amazon RDS for SQL Server 的變更資料擷取
Amazon RDS支援執行 Microsoft SQL Server 的資料庫執行個體變更資料擷取 (CDC)。CDC 會擷取對資料表中資料所做的變更。它會儲存與每個變更相關的中繼資料,而您稍候可存取這些中繼資料。如需如何CDC運作的詳細資訊,請參閱 Microsoft 文件中的變更資料擷取
CDC 搭配 Amazon RDS 資料庫執行個體使用 之前,請先執行 ,在資料庫中啟用它msdb.dbo.rds_cdc_enable_db
。您必須具有主要使用者權限,才能在 Amazon 資料庫執行個體CDC中啟用 RDS 。CDC 啟用之後,db_owner
該資料庫的任何使用者都可以在該資料庫中的資料表CDC上啟用或停用 。
重要
在還原期間, CDC 將會停用。所有相關中繼資料會自動從資料庫移除。這適用於 S3 的快照還原 point-in-time、還原和 SQL Server Native 還原。執行其中一種還原後,您可以重新啟用CDC並重新指定要追蹤的資料表。
若要CDC為資料庫執行個體啟用 ,請執行msdb.dbo.rds_cdc_enable_db
預存程序。
exec msdb.dbo.rds_cdc_enable_db '
database_name
'
若要CDC停用資料庫執行個體,請執行msdb.dbo.rds_cdc_disable_db
預存程序。
exec msdb.dbo.rds_cdc_disable_db '
database_name
'
使用變更資料擷取來追蹤資料表
在 資料庫上啟用 CDC 後,您可以開始追蹤特定資料表。您可以執行 sys.sp_cdc_enable_table
--Begin tracking a table exec sys.sp_cdc_enable_table @source_schema = N'
source_schema
' , @source_name = N'source_name
' , @role_name = N'role_name
' --The following parameters are optional: --, @capture_instance = 'capture_instance
' --, @supports_net_changes = supports_net_changes --, @index_name = 'index_name
' --, @captured_column_list = 'captured_column_list
' --, @filegroup_name = 'filegroup_name
' --, @allow_partition_switch = 'allow_partition_switch
' ;
若要檢視資料表的CDC組態,請執行 sys.sp_cdc_help_change_data_capture
--View CDC configuration exec sys.sp_cdc_help_change_data_capture --The following parameters are optional and must be used together. -- '
schema_name
', 'table_name
' ;
如需有關SQL伺服器文件中CDC資料表、函數和預存程序的詳細資訊,請參閱下列內容:
變更資料擷取任務
當您啟用 時CDC,SQL伺服器會建立CDC任務。資料庫擁有者 (db_owner
) 可以檢視、建立、修改和刪除CDC任務。但是,RDS系統帳戶擁有它們。因此,任務無法從原生檢視、程序或在 SQL Server Management Studio 中看見。
若要控制CDC資料庫中的 行為,請使用原生SQL伺服器程序,例如 sp_cdc_enable_tablemaxtrans
和 maxscans
,您可以使用 sp_cdc_change_job。
若要取得任務的詳細資訊CDC,您可以查詢下列動態管理檢視:
sys.dm_cdc_errors
sys.dm_cdc_log_scan_sessions
sysjobs
sysjobhistory
變更多個可用區執行個體的資料擷取
如果您在多可用區執行個體CDC上使用 ,請確定鏡像CDC的任務組態與主體上的 組態相符。CDC 任務會映射到 database_id
。如果次要 IDs 上的資料庫與主體不同,則任務不會與正確的資料庫相關聯。若要嘗試防止容錯移轉後發生錯誤, 會在新主體上RDS捨棄和重新建立任務。重新建立的任務會使用委託人在容錯移轉之前記錄的參數。
雖然此程序執行速度很快,但作業仍CDC可能在 之前執行,RDS才能加以修正。以下是強制讓主要和次要複本之間的參數一致的三個方式:
對所有CDC已啟用的資料庫使用相同的任務參數。
變更CDC任務組態之前,請將多可用區執行個體轉換為單一可用區。
每當您在委託人上變更參數時,請手動傳輸參數。
若要檢視和定義用於在容錯移轉後重新建立CDC任務的CDC參數,請使用 rds_show_configuration
和 rds_set_configuration
。
下列範例會傳回 cdc_capture_maxtrans
的數值:對於設定為 的任何參數RDS_DEFAULT
, RDS會自動設定 值。
-- Show configuration for each parameter on either primary and secondary replicas. exec rdsadmin.dbo.rds_show_configuration 'cdc_capture_maxtrans';
若要設定次要伺服器上的組態,請執行 rdsadmin.dbo.rds_set_configuration
。此程序會設定次要伺服器上所有資料庫的參數值。只有在容錯移轉之後才會使用這些設定。下列範例會將所有CDC擷取任務maxtrans
的 設定為 1000
:
--To set values on secondary. These are used after failover. exec rdsadmin.dbo.rds_set_configuration 'cdc_capture_maxtrans',
1000
;
若要在主體上設定CDC任務參數,請改用 sys.sp_cdc_change_job