Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

सभी तालिकाओं पर परिवर्तनीय () का उपयोग करना

मैं इस सुविधा से परिचित नहीं हूँ, लेकिन यदि आपकी समस्या CHANGETABLE() का उपयोग करके एकाधिक तालिकाओं को क्वेरी करने का तरीका है तो मुझे लगता है कि आप सभी टेबल नामों पर लूप करने के लिए संग्रहीत प्रक्रिया का उपयोग कर सकते हैं और गतिशील एसक्यूएल का उपयोग कर क्वेरी चला सकते हैं:

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

आप इसे INSERT . के साथ जोड़ सकते हैं डायनामिक SQL में परिणामों को उस तालिका में लिखने के लिए जिसे आप रिपोर्टिंग और विश्लेषण के लिए क्वेरी करते हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सरल सिंटेक्स:आल्टर टेबल स्टेटमेंट में एकाधिक बाधाएं

  2. रिक्त तालिका में कैसे शामिल हों

  3. जब DRY सिद्धांत लागू नहीं होता है:SQL सर्वर में बिटवाइज़ संचालन

  4. SQL सर्वर एकाधिक पंक्तियों को एक में संयोजित करता है

  5. SQL सर्वर प्रदर्शन टॉप CPU क्वेरी -1