4

データを同期するアプリケーションに取り組んでいます。より多くの情報が必要なため、CT の代わりに CDC を使用することにしましたが、同時に、CT を使用して次のように変化する列を返す関数が必要です。

SELECT 
CTTable.SYS_CHANGE_OPERATION,
[FNameCh] = CHANGE_TRACKING_IS_COLUMN_IN_MASK(COLUMNPROPERTY(OBJECT_ID('CONTACT_TABLE'),        
       'contact_name', 'ColumnId'), SYS_CHANGE_COLUMNS),
[LNameCh] = CHANGE_TRACKING_IS_COLUMN_IN_MASK(COLUMNPROPERTY(OBJECT_ID('CONTACT_TABLE'), 
       'contact_lastname', 'ColumnId'), SYS_CHANGE_COLUMNS),

FROM CHANGETABLE (CHANGES Contacts, @VersionId) AS CTTable 
LEFT OUTER JOIN Contacts AS C ON C.CONTACT_ID = CTTable.CONTACT_ID
GO

編集:

SELECT * , sys.fn_cdc_has_column_changed ('dbo_CONTACT_TABLE', 'contact_name', __$update_mask) AS FNameCh 

From   cdc.fn_cdc_get_all_changes_dbo_CONTACT_TABLE(@Start_Lsn,@End_Lsn,'all')
which 1 for if the contact_name is changed and 0 if is not.

ありがとう

4

1 に答える 1

0

sys.fn_cdc_is_bit_set を使用して識別できます。詳細については、以下のリンクを参照してください。

http://msdn.microsoft.com/en-us/library/bb500241.aspx

于 2013-06-19T09:25:51.023 に答える