Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Linked Server einfügen – Leistung auswählen

Der schnellste Weg besteht darin, die Daten abzurufen, anstatt sie zu verschieben. Wenn die Tabellen gepusht werden, erfordert jede Zeile eine Verbindung, eine Einfügung und eine Trennung.

Wenn Sie die Daten nicht abrufen können, weil Sie eine unidirektionale Vertrauensbeziehung zwischen den Servern haben, besteht der Workaround darin, die gesamte Tabelle als riesige T-SQL-Anweisung zu erstellen und alles auf einmal auszuführen.

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