8.3.2. SQL Server テーブルでの CDC の有効化
SQL Server 管理者は、Debezium がキャプチャーするソーステーブルで変更データキャプチャー (CDC) を有効にする必要があります。データベースが CDC に対してすでに有効になっている必要があります。テーブルで CDC を有効にするには、SQL Server 管理者はストアドプロシージャー sys.sp_cdc_enable_table
をテーブルに対して実行します。ストアドプロシージャーは、SQL Server Management Studio または Transact-SQL を使用すると実行できます。キャプチャーするすべてのテーブルに対して SQL Server の CDC を有効にする必要があります。
前提条件
- CDC が SQL Server データベースで有効になっている。
- SQL Server Agent が稼働している。
-
データベースの
db_owner
固定データベー出力ルのメンバーである。
手順
- SQL Server Management Studio の View メニューから Template Explorer をクリックします。
- Template Browser で、SQL Server Templates を展開します。
- Change Data Capture > Configuration を展開した後、Enable Table Specifying Filegroup Option をクリックします。
-
テンプレートで、
USE
ステートメントのテーブル名を、キャプチャーするテーブルの名前に置き換えます。 ストアドプロシージャー
sys.sp_cdc_enable_table
を実行します。以下の例は、テーブル
MyTable
に対して CDC を有効にする方法を示しています。以下に例を示します。SQL Server テーブルに対する CDC の有効化
USE MyDB GO EXEC sys.sp_cdc_enable_table @source_schema = N'dbo', @source_name = N'MyTable', 1 @role_name = N'MyRole', 2 @filegroup_name = N'MyDB_CT',3 @supports_net_changes = 0 GO
- 1 1 1 1 1 1 1
- キャプチャーするテーブルの名前を指定します。
- 2 2 2 2 2 2 1 2
- ソーステーブルのキャプチャされた列に対する
SELECT
権限を付与したいユーザーを追加できるロールMy Role
を指定します。sysadmin
またはdb_owner
ロールのユーザーも、指定された変更テーブルにアクセスできます。sysadmin
またはdb_owner
のメンバーだけがキャプチャされた情報に完全にアクセスできるようにするには、@role_name
の値をNULL
に設定します。 - 3 3 3 3 3 2 3
- キャプチャしたテーブルの変更テーブルを SQL Server が配置する
filegroup
を指定します。指定されたfilegroup
は、すでに存在している必要があります。ソーステーブルに使用するのと同じfilegroup
に変更テーブルを置かないことが推奨されます。