0

変更追跡を使用して、データベースで変更されたテーブルを知る必要があります。コミット ID で最後に更新されたテーブルを見つけることができるテーブルはありますか? 使用できますselect * from CHANGETABLE(CHANGES taitemnames,25262)ct order by sys_change_version descが、変更を確認するためにテーブルごとに 1 回実行する必要があります。

4

2 に答える 2

0

私はこの機能に慣れていませんが、問題が複数のテーブルをクエリする方法であるCHANGETABLE()場合は、ストアド プロシージャを使用してすべてのテーブル名をループし、動的 ​​SQL を使用してクエリを実行できると思います。

declare 
    @sql nvarchar(max), 
    @parameters nvarchar(max), 
    @TableName nvarchar(128), 
    @Version bigint

set @Version = CHANGE_TRACKING_CURRENT_VERSION()

declare Tables cursor local fast_forward
for 
select name from sys.tables where... -- add conditions here if necessary

open Tables
fetch next from Tables into @TableName
while @@fetch_status = 0
begin
    set @sql = N'select * from CHANGETABLE(CHANGES ' + quotename(@TableName) + ', @LastVersion)ct order by sys_change_version desc'
    set @parameters = N'@LastVersion bigint'
    exec sp_executesql @sql, @parameters, @LastVersion = @Version
    fetch next from Tables into @TableName
end

close Tables
deallocate Tables

これを動的 SQL の と組み合わせてINSERT、結果をテーブルに書き込み、レポートと分析のためにクエリを実行できます。

于 2012-11-15T22:51:15.023 に答える
0

試してみてください( MSDN here でsys.CHANGE_TRACKING_TABLES文書化されています)。

OBJECT_NAME最初の列からテーブル名を取得するために使用する必要があります。

于 2014-05-28T22:19:51.153 に答える