cdc.fn_cdc_get_all_changes_<capture_instance> (TRANSACT-SQL)cdc.fn_cdc_get_all_changes_<capture_instance> (Transact-SQL)

適用対象: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

指定されたログ シーケンス番号 (LSN) の範囲内で、ソース テーブルに適用された各変更につき 1 行を返します。Returns one row for each change applied to the source table within the specified log sequence number (LSN) range. 該当する期間中、1 つのソース行に複数の変更が加えられた場合、返される結果セットには、それぞれの変更が格納されます。If a source row had multiple changes during the interval, each change is represented in the returned result set. 返された変更データおよび 4 つのメタデータ列によって、他のデータ ソースにその変更を適用するために必要な情報を得ることができます。In addition to returning the change data, four metadata columns provide the information you need to apply the changes to another data source. 結果セットとして返される行およびメタデータ列の内容は、行のフィルター選択オプションによって制御されます。Row filtering options govern the content of the metadata columns as well as the rows returned in the result set. 行のフィルター選択オプションに 'all' を指定した場合、それぞれの変更について、対応する 1 行が返されます。When the 'all' row filter option is specified, each change has exactly one row to identify the change. 'all update old' オプションを指定した場合、更新操作は、更新前と更新後のキャプチャ対象列の値を格納する 2 つの行で表されます。When the 'all update old' option is specified, update operations are represented as two rows: one containing the values of the captured columns before the update and another containing the values of the captured columns after the update.

この列挙関数は、ソース テーブルに対して変更データ キャプチャを有効にした時点で作成されます。This enumeration function is created at the time that a source table is enabled for change data capture. 関数の名前は派生し、形式を使用してcdc.fn_cdc_get_all_changes_ capture_instance_場所capture_instanceキャプチャ用に指定された値は、ソース テーブルが変更データ キャプチャの有効な場合はインスタンス。The function name is derived and uses the format **cdc.fn_cdc_get_all_changes**capture_instance where capture_instance is the value specified for the capture instance when the source table is enabled for change data capture.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

  
cdc.fn_cdc_get_all_changes_capture_instance ( from_lsn , to_lsn , '<row_filter_option>' )  
  
<row_filter_option> ::=  
{ all  
 | all update old  
}  

引数Arguments

from_lsnfrom_lsn
結果セットに含める LSN 範囲の下端を表す LSN 値を指定します。The LSN value that represents the low endpoint of the LSN range to include in the result set. from_lsnbinary (10) します。from_lsn is binary(10).

内の行のみ、 cdc[ 。capture_instance]_CTで値を持つテーブルを変更する _ _ $start_lsnより大きいまたは等しいfrom_lsn結果セットに含まれます。Only rows in the cdc.[capture_instance]_CT change table with a value in __$start_lsn greater than or equal to from_lsn are included in the result set.

to_lsnto_lsn
結果セットに含める LSN 範囲の上端を表す LSN 値を指定します。The LSN value that represents the high endpoint of the LSN range to include in the result set. to_lsnbinary (10) します。to_lsn is binary(10).

内の行のみ、 cdc[ 。capture_instance]_CTで値を持つテーブルを変更する _ _ $start_lsnに等しいまたはそれよりも小さいfrom_lsn以上to_lsnが含まれています結果セット。Only rows in the cdc.[capture_instance]_CT change table with a value in __$start_lsn less than or equal to from_lsn or equal to to_lsn are included in the result set.

<row_filter_option> ::= { all | all update old }<row_filter_option> ::= { all | all update old }
結果セットで返される行と同様に、メタデータ列の内容を制御するオプション。An option that governs the content of the metadata columns as well as the rows returned in the result set.

次のいずれかのオプションを指定できます。Can be one of the following options:

allall
指定された LSN 範囲内のすべての変更を返します。Returns all changes within the specified LSN range. 更新操作で生じた変更の場合、更新適用後の新しい値を格納した行だけが返されます。For changes due to an update operation, this option only returns the row containing the new values after the update is applied.

all update oldall update old
指定された LSN 範囲内のすべての変更を返します。Returns all changes within the specified LSN range. 更新操作のための変更は、このオプションは、更新前に列の値を含む行と更新後の列の値を含む行の両方を返します。For changes due to an update operation, this option returns both the row containing the column values before the update and the row containing the column values after the update.

返されるテーブルTable Returned

列名Column name データ型Data type 説明Description
__$start_lsn__$start_lsn binary(10)binary(10) 変更に関連付けられたコミット LSN。この LSN によって変更のコミット順が維持されます。Commit LSN associated with the change that preserves the commit order of the change. 同じトランザクションでコミットされた変更は、同じコミット LSN 値を共有します。Changes committed in the same transaction share the same commit LSN value.
__$seqval__$seqval binary(10)binary(10) シーケンス値が、トランザクション内で行の順序変更するために使用します。Sequence value used to order changes to a row within a transaction.
__$operation__$operation intint 変更データの行をターゲット データ ソースに適用するために必要となった DML (データ操作言語) 操作を識別します。Identifies the data manipulation language (DML) operation needed to apply the row of change data to the target data source. 次のいずれかになります。Can be one of the following:

1 = 削除1 = delete

2 = 挿入2 = insert

3 = 更新 (キャプチャされる列値は更新操作前の値)。3 = update (captured column values are those before the update operation). この値が該当するのは、行フィルター オプションに 'all update old' を指定した場合だけです。This value applies only when the row filter option 'all update old' is specified.

4 = 更新 (キャプチャされる列値は更新操作後の値)4 = update (captured column values are those after the update operation)
__$update_mask__$update_mask varbinary (128)varbinary(128) キャプチャ インスタンスに対して指定された各キャプチャ対象列に対応するビットを持ったビット マスク。A bit mask with a bit corresponding to each captured column identified for the capture instance. この値がすべて定義すると 1 に設定されたビット _ _ $操作= 1 または 2 です。This value has all defined bits set to 1 when __$operation = 1 or 2. ときに _ _ $操作= 3 または 4、変更された列に対応するビットだけが 1 に設定されます。When __$operation = 3 or 4, only those bits corresponding to columns that changed are set to 1.
< キャプチャ対象のソース テーブルの列 ><captured source table columns> 各種varies この関数によって返されるその他の列は、キャプチャ インスタンスの作成時に指定されたキャプチャ対象列です。The remaining columns returned by the function are the captured columns identified when the capture instance was created. キャプチャ対象列リストで列が指定されなかった場合、ソース テーブルのすべての列が返されます。If no columns were specified in the captured column list, all columns in the source table are returned.

アクセス許可Permissions

メンバーシップが必要です、 sysadmin固定サーバー ロールまたはdb_owner固定データベース ロール。Requires membership in the sysadmin fixed server role or db_owner fixed database role. それ以外のすべてのユーザーについては、ソース テーブルのすべてのキャプチャ対象列に対する SELECT 権限が必要です。さらに、キャプチャ インスタンスのゲーティング ロールが定義されている場合は、そのデータベース ロールのメンバーシップが必要です。For all other users, requires SELECT permission on all captured columns in the source table and, if a gating role for the capture instance was defined, membership in that database role. 関数が、エラー 229 を返します、呼び出し元にソース データを表示するアクセス許可がないとき ("SELECT 権限が拒否されましたオブジェクト 'fn_cdc_get_all_changes_...'、データベース '<DatabaseName >'、スキーマ 'cdc' です。")。When the caller does not have permission to view the source data, the function returns error 229 ("The SELECT permission was denied on the object 'fn_cdc_get_all_changes_...', database '<DatabaseName>', schema 'cdc'.").

コメントRemarks

指定した LSN 範囲が、キャプチャ インスタンスの変更追跡時間外に該当した場合、エラー 208 ("プロシージャまたは関数 cdc.fn_cdc_get_all_changes に指定された引数が不足しています。") が返されます。If the specified LSN range does not fall within the change tracking timeline for the capture instance, the function returns error 208 ("An insufficient number of arguments were supplied for the procedure or function cdc.fn_cdc_get_all_changes.").

データ型の列イメージテキスト、およびntext常に NULL が割り当てられている値と _ _ $操作= 1 または _ _ $操作= 3。Columns of data type image, text, and ntext are always assigned a NULL value when __$operation = 1 or __$operation = 3. データ型の列varbinary (max)varchar (max) 、またはnvarchar (max) NULL が割り当てられている値と _ _ $操作3 を =しない限り、列が更新中に変更します。Columns of data type varbinary(max), varchar(max), or nvarchar(max) are assigned a NULL value when __$operation = 3 unless the column changed during the update. ときに _ _ $操作= 1、これらの列には、削除時にその値が割り当てられます。When __$operation = 1, these columns are assigned their value at the time of the delete. キャプチャ インスタンスに含まれる計算列の値は、常に NULL になります。Computed columns that are included in a capture instance always have a value of NULL.

使用例Examples

いくつかSQL Server Management StudioSQL Server Management Studioテンプレートは、変更データ キャプチャ クエリ関数を使用する方法を示します。Several SQL Server Management StudioSQL Server Management Studio templates are available that show how to use the change data capture query functions. これらのテンプレートでは、ビューメニューManagement StudioManagement Studioします。These templates are available on the View menu in Management StudioManagement Studio. 詳細については、次を参照してください。テンプレート エクスプ ローラーします。For more information, see Template Explorer.

この例は、Enumerate All Changes for Valid Range Template を示しています。This example shows the Enumerate All Changes for Valid Range Template. この例では、関数 cdc.fn_cdc_get_all_changes_HR_Department を使用して、AdventureWorks2012AdventureWorks2012 データベース内の HumanResources.Department ソース テーブルに対して定義されているキャプチャ インスタンス HR_Department で現在使用できる変更をすべてレポートします。It uses the function cdc.fn_cdc_get_all_changes_HR_Department to report all the currently available changes for the capture instance HR_Department, which is defined for the source table HumanResources.Department in the AdventureWorks2012AdventureWorks2012 database.

-- ========  
-- Enumerate All Changes for Valid Range Template  
-- ========  
USE AdventureWorks2012;  
GO  
  
DECLARE @from_lsn binary(10), @to_lsn binary(10);  
SET @from_lsn = sys.fn_cdc_get_min_lsn('HR_Department');  
SET @to_lsn   = sys.fn_cdc_get_max_lsn();  
SELECT * FROM cdc.fn_cdc_get_all_changes_HR_Department  
  (@from_lsn, @to_lsn, N'all');  
GO  

参照See Also

cdc.fn_cdc_get_net_changes_<capture_instance> (TRANSACT-SQL) cdc.fn_cdc_get_net_changes_<capture_instance> (Transact-SQL)
sys.fn_cdc_map_time_to_lsn (TRANSACT-SQL) sys.fn_cdc_map_time_to_lsn (Transact-SQL)
sys.sp_cdc_get_ddl_history (TRANSACT-SQL) sys.sp_cdc_get_ddl_history (Transact-SQL)
sys.sp_cdc_get_captured_columns (TRANSACT-SQL) sys.sp_cdc_get_captured_columns (Transact-SQL)
sys.sp_cdc_help_change_data_capture (TRANSACT-SQL) sys.sp_cdc_help_change_data_capture (Transact-SQL)
変更データ キャプチャについて (SQL Server)About Change Data Capture (SQL Server)