2012-11-15 38 views
0

我需要知道哪些表是使用更改跟蹤在數據庫中更改的表。有沒有任何表,我可以找到最後更新的表與提交ID? 我可以使用select * from CHANGETABLE(CHANGES taitemnames,25262)ct order by sys_change_version desc,但這需要我爲每個表運行一次以檢查更改。對所有表使用CHANGETABLE()

回答

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結合起來,將結果寫入表中,然後查詢報表和分析。

0

嘗試sys.CHANGE_TRACKING_TABLES(記錄on MSDN here)。

您將不得不使用OBJECT_NAME從第一列中獲取表名稱。