sql >> Database >  >> RDS >> Sqlserver

CHANGETABLE() gebruiken op alle tabellen

Ik ben niet bekend met deze functie, maar als uw probleem is hoe u meerdere tabellen kunt doorzoeken met CHANGETABLE() dan neem ik aan dat je een opgeslagen procedure zou kunnen gebruiken om alle tabelnamen te doorlopen en de query uit te voeren met dynamische 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

Je zou dit kunnen combineren met een INSERT in de dynamische SQL om de resultaten in een tabel te schrijven die u vervolgens opvraagt ​​voor rapportage en analyse.



  1. Sla nieuwe positie van RecyclerView-items op in SQLite nadat ze zijn gesleept en neergezet

  2. Hoe categorieëngegevens in de database te structureren?

  3. Laravel afbeelding uploaden naar database

  4. Postgresql-trigger bij aanmelding van gebruiker