Il formato dovrebbe probabilmente essere:
<server>.<database>.<schema>.<table>
Ad esempio: DatabaseServer1.db1.dbo.table1
Aggiornamento : so che questa è una vecchia domanda e la risposta che ho è corretta; tuttavia, penso che chiunque altro si imbattesse in questo dovrebbe sapere alcune cose.
Vale a dire, quando si esegue una query su un server collegato in una situazione di join, l' INTERA tabella dal server collegato verrà probabilmente scaricata sul server da cui viene eseguita la query per eseguire l'operazione di join. Nel caso dell'OP, sia table1
from DB1
che table1
from DB2
verranno trasferiti nella loro interezza al server che esegue la query, presumibilmente denominato DB3
.
Se si dispone di tabelle di grandi dimensioni, potrebbe verificarsi un'operazione che richiede molto tempo per essere eseguita. Dopotutto, ora è limitato dalla velocità del traffico di rete che è di ordini di grandezza inferiore alla velocità di trasferimento della memoria o persino del disco.
Se possibile, eseguire una singola query sul server remoto, senza aderire a una tabella locale, per estrarre i dati necessari in una tabella temporanea. Quindi interroga su quello.
Se ciò non è possibile, è necessario esaminare le varie cose che farebbero sì che il server SQL debba caricare l'intera tabella localmente. Ad esempio utilizzando GETDATE()
o anche determinati join. Altri assassini di prestazioni includono il mancato conferimento dei diritti appropriati.
Vedi http://thomaslarock.com/2013/05/top-3-performance-killers-for-linked-server-queries/ per ulteriori informazioni.