Sql server 2008 在所有表上使用CHANGETABLE()

Sql server 2008 在所有表上使用CHANGETABLE(),sql-server-2008,Sql Server 2008,我需要知道在数据库中使用更改跟踪更改了哪些表。是否有任何表可以在其中找到具有提交id的最后更新的表? 我可以使用sys\u change\u version desc从CHANGETABLE(CHANGES taitemnames,25262)ct订单中选择*, 我不熟悉此功能,但如果您的问题是如何使用CHANGETABLE()查询多个表,那么我假设您可以使用存储过程循环所有表名,并使用动态SQL运行查询: declare @sql nvarchar(max), @param

我需要知道在数据库中使用更改跟踪更改了哪些表。是否有任何表可以在其中找到具有提交id的最后更新的表?
我可以使用sys\u change\u version desc从CHANGETABLE(CHANGES taitemnames,25262)ct订单中选择*,

我不熟悉此功能,但如果您的问题是如何使用
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中的
插入相结合,将结果写入一个表中,然后查询该表以进行报告和分析。

尝试
sys.CHANGE\u TRACKING\u TABLES
(文档化)

您必须使用
OBJECT\u NAME
从第一列获取表名