SQLServer2008。データベース内のいくつかの関連するテーブルの変更データキャプチャ(または変更追跡)を作成することは可能ですか?たとえば、多対多の関係。
それはどのように見えるでしょうか?
SQLServer2008。データベース内のいくつかの関連するテーブルの変更データキャプチャ(または変更追跡)を作成することは可能ですか?たとえば、多対多の関係。
それはどのように見えるでしょうか?
使用したことはありませんが、MSDNドキュメントから私は言うでしょう:はい!
最初にデータベースを準備します。
ALTER DATABASE [yourdb] SET ALLOW_SNAPSHOT_ISOLATION ON
ALTER DATABASE [yourdb]
SET CHANGE_TRACKING = ON
(CHANGE_RETENTION = 2 DAYS, AUTO_CLEANUP = ON)
次に、必要なテーブルで変更の追跡を有効にします。
ALTER TABLE [yourdb].[yourschema].[yourtable]
ENABLE CHANGE_TRACKING
変更のクエリ:
IF @sync_initialized = 0
SELECT *
FROM [yourschema].[yourtable] LEFT OUTER JOIN
CHANGETABLE(CHANGES [yourschema].[yourtable], @sync_last_received_anchor) CT
ON CT.[yourkey] = [yourschema].[yourtable].[yourkey]
ELSE
BEGIN
SELECT *
FROM Sales.Customer
JOIN CHANGETABLE(CHANGES [yourschema].[yourtable], @sync_last_received_anchor) CT
ON CT.[yourkey] = [yourschema].[yourtable].[yourkey]
WHERE (CT.SYS_CHANGE_OPERATION = 'I'
AND CT.SYS_CHANGE_CREATION_VERSION
<= @sync_new_received_anchor)
END