giovedì 7 aprile 2011

SQL Server: query cross-server

A volte capita di dover eseguire una query tra un server e l'altro, ad esempio per copiare delle tabelle da una macchina di integrazione e una di sviluppo o viceversa. Ecco spiegato, in pochi semplici passi, come fare:
  1. Innanzi tutto, bisogna abilitare questa funzione su SQL Server, perché di default è disattivata (motivi di sicurezza). Per fare ciò si utilizza la SP sp_configure.
    exec sp_configure 'show advanced options', 1
    reconfigure

    exec sp_configure 'Ad Hoc Distributed Queries', 1
    reconfigure
  2. Collegarsi alla macchina di destinazione (quella dove andrà fatta la INSERT, per intenderci)
  3. Eseguire la seguente query:
    INSERT INTO
    [target_db].[target_schema].[target_table]
    ([column_1],...,[column_N])
    SELECT
    [column_1],...,[column_N]
    FROM OPENDATASOURCE(
    'SQLOLEDB',
    'Data Source=server[,port];User ID=user_id;Password=password'
    ).[source_db].[source_schema].[source_table]
Il gioco è fatto. A questo punto, salvo imprevisti (nell'informatica non si sa mai ;) ) l'istruzione dovrebbe aver copiato una tabella da un server all'altro. Una volta fatto ciò ricordarsi sempre di ripristinare le impostazioni di sicurezza al valore precedente.

Nessun commento:

Posta un commento

BlogItalia.it - La directory italiana dei blog