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

लिंक्ड सर्वर इंसर्ट-सेलेक्ट परफॉर्मेंस

सबसे तेज़ तरीका डेटा को पुश करने के बजाय उसे खींचना है। जब तालिकाओं को धक्का दिया जाता है, तो प्रत्येक पंक्ति को एक कनेक्शन, एक इंसर्ट और एक डिस्कनेक्ट की आवश्यकता होती है।

यदि आप डेटा नहीं खींच सकते हैं, क्योंकि आपके पास सर्वरों के बीच एकतरफा विश्वास संबंध है, तो पूरी तालिका को एक विशाल टी-एसक्यूएल स्टेटमेंट के रूप में तैयार करना और इसे एक साथ चलाना है।

DECLARE @xml XML

SET @xml = (
        SELECT 'insert Remote_Table values (' + '''' + isnull(first_col, 'NULL') + ''',' +
            -- repeat for each col
            '''' + isnull(last_col, 'NULL') + '''' + ');'
        FROM Local_Table
        FOR XML path('')
        ) --This concatenates all the rows into a single xml object, the empty path keeps it from having <colname> </colname> wrapped arround each value

DECLARE @sql AS VARCHAR(max)

SET @sql = 'set nocount on;' + cast(@xml AS VARCHAR(max)) + 'set nocount off;' --Converts XML back to a long string

EXEC ('use RemoteDb;' + @sql) AT RemoteServer


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में डेटाटाइम को M/D/YYYY के रूप में कैसे प्रारूपित करें?

  2. मैं SQL सर्वर में विभाजित फ़ंक्शन को इनलाइन तालिका मूल्यवान udf में कैसे परिवर्तित कर सकता हूं?

  3. एसक्यूएल - एग्रीगेट्स के बिना कई कॉलम पिवट करें

  4. SQL सर्वर सुरक्षा फ़ंक्शन को समझना HAS_Permis_BY_Name और इसके उपयोग के मामले

  5. SQL सर्वर में संकुल अनुक्रमणिका कैसे चुनें?