Blog
home > blog > Eseguire una query SQL da un SQL Server ad un altro

Tag: sql, SQL Server

Eseguire una query SQL da un SQL Server ad un altro

Esaminiamo il modo per eseguire query SQL fra database differenti e server differenti
di Maurizio Ceravolo

L'altro giorno mi sono trovato a dover fare query dal mio SQL Server in locale ad un server in remoto, combinando e confrontando dati da uno all'altro.

Fare query fra due database diffenti dello stesso server è molto semplice. Vediamo ad esempio una union fra database differenti.

SELECT Colonna FROM Database1.dbo.Tabella1
UNION
SELECT Colonna FROM Database2.dbo.Tabella2

Semplicissimo. Se dovesse essere frequente di aver bisogno di dover interrogare una tabella da un database differente, si può pensare a due strade.

  • se i dati non cambiano di frequente, si può pensare ad una importazione nel proprio database ad intervalli prefissati
  • se i dati cambiano di frequente, l'importazione potrebbe essere onerosa e problematica. Quindi la cosa più conveniente sarebbe fare una vista al cui interno richiamiamo la tabella dall'altro database nella forma

    SELECT * FROM Database1.dbo.Tabella1

    Attenzione solo ad un fatto. Eventuali chiavi esterne ai dati di questa vista non potrebbero rispettare i vincoli di integrità referenziale. Non è possibile creare relazioni fra dati di database differenti.
    Ultima considerazione: nel caso in cui la frequenza di aggiornamento sia superiore a qualche secondo, quindi frequente, ma non troppo, per migliorare le prestazioni possiamo pensare di rendere la vista statica.

Ma se invece dobbiamo prendere dati da un diverso server? La cosa più semplice da pensare, sarebbe di anteporre nelle query al nome del database, quello della macchina. In questo modo:

SELECT * FROM [ip].Database1.dbo.Tabella1

L'idea è giusta, ma non funziona, perchè occorre prima linkare quella macchina al server da cui parte la query. Per vedere la lista dei server linkati, basta eseguire la query

SELECT * FROM sys.servers

Se il server su cui vorremmo fare la query non è nella lista, dobbiamo aggiungerlo, usando la stored procedure di sistema sp_addlinkedserver. Ad esempio, io l'ho usata in questa forma:

EXEC sp_addlinkedserver  
   @server=N'ip',
   @srvproduct=N'',
   @provider=N'SQLNCLI'

Fatto questo adesso la query precedente funziona. Per chi volesse approfondire questa stored procedure, può leggere la documentazione cliccando qui.
Una ultima considerazione. Ci si potrebbe domandare, ma dove le inserisco le credenziali di autorizzazione a quella macchina? Non nella stored appena citata. Automaticamente vengono prese dai server registrati di quella macchina. Per ulteriori informazioni a questo proposito, vi rimando alla documentazione.

Post correlati
2010
28
Ottobre
Abilitare e disabilitare i vincoli su un database SQL Server
Maurizio Ceravolo
Due stored procedure per abilitare e disabilitare i vincoli su un database SQL Server.
2010
9
Dicembre
TSQL: concatenare più record senza usare un cursore
Maurizio Ceravolo
Concatenare più record di una tabella in un'unica stringa necessita un cursore, che però è poco performante. Vediamo un metodo tramite FOR XML PATH per concatenare con una query secca.
2011
18
Marzo
TSQL: convertire un numero in esadecimale
Maurizio Ceravolo
Alle volte c'è la necessità di convertire un numero in esadecimale direttamente dalla fonte dati per generare dei codici colore da usare direttamente su una pagina web.
2011
12
Ottobre
Ebook gratuito su SQL Server "Denali"
Maurizio Ceravolo
Microsoft distribuisce in anteprima e gratuitamente un estratto del libro digitale su SQL Server "Denali". Il libro completo sarà disponibile in primavera 2012.
2011
10
Gennaio
SQL Server Integration Services: 64 bit con limitazioni
Maurizio Ceravolo
Nella versione a 64 bit degli Integration Services di SQL Server non è possibile interfacciarsi con Excel di default. Vediamo come aggirare il problema.


Archivio Mensile Blog
Tag Cloud
Apple editoria evoluzionismo digitale Facebook Fax geek Google google places Google+ humor innovazione iPhone IT marketing Microsoft shopping online social network video viral Windows Phone 7
Ultimi Post
I migliori di oggi
I più popolari del mese
Top post