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