Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Sử dụng CHANGETABLE () trên tất cả các bảng

Tôi không quen với tính năng này, nhưng nếu vấn đề của bạn là cách truy vấn nhiều bảng bằng cách sử dụng CHANGETABLE() thì tôi giả sử bạn có thể sử dụng một thủ tục được lưu trữ để lặp lại tất cả các tên bảng và chạy truy vấn bằng cách sử dụng SQL động:

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

Bạn có thể kết hợp điều này với một INSERT trong SQL động để ghi kết quả vào một bảng mà sau đó bạn truy vấn để báo cáo và phân tích.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các phương pháp hay nhất về khôi phục sau thảm họa của Microsoft SQL Server

  2. Làm cách nào để thêm giờ vào ngày hiện tại trong SQL Server?

  3. Lỗi khi đăng nhập vào SQL Server

  4. Tìm kiếm tùy chỉnh SQL với các ký tự đặc biệt

  5. Thêm cột vào bảng với giá trị mặc định bằng giá trị của cột hiện có