sql >> Database teknologi >  >> RDS >> Sqlserver

Brug af CHANGETABLE() på alle tabeller

Jeg er ikke bekendt med denne funktion, men hvis dit problem er, hvordan du forespørger flere tabeller ved hjælp af CHANGETABLE() så antager jeg, at du kunne bruge en lagret procedure til at gå over alle tabelnavne og køre forespørgslen ved hjælp af dynamisk 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

Du kan kombinere dette med en INSERT i den dynamiske SQL for at skrive resultaterne ind i en tabel, som du derefter forespørger på til rapportering og analyse.



  1. Syntaksfejl under forsøg på at kalde en Oracle-pakke ved hjælp af ODBC i C#

  2. OpenCart:Sådan udfyldes oc_category_path nøjagtigt

  3. Sådan omdøbes databasen i multi-user mode

  4. Find ikke-numeriske værdier i en kolonne i SQL Server