sql >> Databáze >  >> RDS >> Sqlserver

Výkon vložení a výběru propojeného serveru

Nejrychlejší způsob je data spíše vytahovat než tlačit. Když jsou tabulky posunuty, každý řádek vyžaduje připojení, vložení a odpojení.

Pokud nemůžete vytáhnout data, protože mezi servery máte jednosměrný vztah důvěry, můžete celou tabulku zkonstruovat jako obří příkaz T-SQL a spustit ji najednou.

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. Vrátí N sloupců z tabulkové funkce

  2. Tabulka vytvořená v proceduře je zrušena, dochází k chybě kompilace pro proceduru

  3. 2 cizí klíče odkazující na stejný primární klíč v MySQL

  4. Django + MySQL - Admin Site - Přidat uživatele - OperationalError - SAVEPOINT neexistuje