venerdì 16 ottobre 2009

Sql Server e Linked Server


... è possibile collegare due server Sql Server e fare in modo che un server faccia le query sull'altro con i Linked Server o Server Collegati
I Server Collegati si creano in Enterprise Manager (SqlServer 2000), nella sezione Security.
E' sufficiente specificare il nome del server e l'utente con cui ci si collega.
Lo stesso utente sul server collegato deve avere un database collegato altrimenti per default vede solo master.
Il riferimento alla tabella remota avviene nella forma :
servercollegato.database.dbo.tabella
es
SERVERFIVE.PIPPO.dbo.ANAMAGA
e la query è
SELECT * FROM SERVERFIVE.PIPPO.dbo.ANAMAGA

La query in questione però è analizzata ed eseguita in locale con traffico generato dalla lettura dei cataloghi sul server remoto per analizzare la query.
Per far analizzare ed eseguire la query direttamente sul server remoto ed avere in cambio solamente in dati è preferibile usare la funzione OPENQUERY.
La sintassi è semplice :
SELECT * FROM OPENQUERY(servercollegato,query)
L'esempio di sopra sarà trasformato in :
SELECT * FROM OPENQUERY(SERVERFIVE,'SELECT * FROM PIPPO.dbo.ANAMAGA')
I Linked Server si basano sugli OleDb Provider, quindi più in generale è possibile collegare un Sql Server con qualsiasi altro tipo di DB.

NB. Nel caso di collegamento ad una istanza ( es. NomeServer\SQLEXPRESS ), il nome del server collegato dovrà essere racchiuso fra parentesi quadre.

SELECT * FROM [NomeServer\SQLEXPRESS].PIPPO.dbo.ANAMAGA
o
SELECT * FROM OPENQUERY([NomeServer\SQLEXPRESS],'SELECT * FROM PIPPO.dbo.ANAMAGA')

thanks Duccio
Per approfondimenti : qui e qui

Nessun commento:

Posta un commento