cdc. fn_cdc_get_all_changes_ < capture_instance > (transact-sql)cdc.fn_cdc_get_all_changes_<capture_instance> (Transact-SQL)

適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) 適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions)

指定されたログシーケンス番号 (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行で表されます。1つは更新前にキャプチャされた列の値を格納し、もう1つは更新後にキャプチャされた列の値を格納します。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. 関数名は、 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).

結果セットに含まれるのは、 [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).

結果セットに含まれるのは、 [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 greater than or equal to from_lsn and less than or equal to to_lsn are included in the result set.

<row_filter_option>:: = {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 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。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. この値には、 __ $ operation が1または2の場合に、定義済みのすべてのビットが1に設定されます。This value has all defined bits set to 1 when __$operation = 1 or 2. __ $ Operationが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 ("オブジェクト ' fn_cdc_get_all_changes_... '、データベース ' <DatabaseName> '、スキーマ ' cdc ') で SELECT 権限が拒否されました。" を返します。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.").

__ $ Operation = 1 または __ $ operation = 3 の場合、データ型imagetext、およびntextの列には常に NULL 値が割り当てられます。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) の列は、更新中に列が変更されない限り、 __ $ operation = 3 の場合は NULL 値が割り当てられます。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. __ $ Operation = 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)
fn_cdc_map_time_to_lsn (Transact-sql) sys.fn_cdc_map_time_to_lsn (Transact-SQL)
sp_cdc_get_ddl_history (Transact-sql) sys.sp_cdc_get_ddl_history (Transact-SQL)
sp_cdc_get_captured_columns (Transact-sql) sys.sp_cdc_get_captured_columns (Transact-SQL)
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)