Il formato dovrebbe essere probabilmente:
<server>.<database>.<schema>.<table>
Ad esempio:DatabaseServer1.db1.dbo.table1
Aggiorna :So che questa è una vecchia domanda e la risposta che ho è corretta; tuttavia, penso che chiunque altro si imbatta in questo dovrebbe sapere alcune cose.
Vale a dire, quando si esegue una query su un server collegato in una situazione di join INTERO la tabella dal server collegato probabilmente essere scaricato sul server da cui viene eseguita la query per eseguire l'operazione di unione. Nel caso dell'OP, entrambi table1
da DB1
e table1
da DB2
verranno trasferiti nella loro interezza al server che esegue la query, presumibilmente denominato DB3
.
Se hai tavoli di grandi dimensioni, questo potrebbe comportare un'operazione che richiede molto tempo per essere eseguita. Dopotutto ora è limitato dalla velocità del traffico di rete che è di ordini di grandezza più lenta della memoria o persino dalla velocità di trasferimento del disco.
Se possibile, esegui una singola query sul server remoto, senza entrare in una tabella locale, per estrarre i dati necessari in una tabella temporanea. Quindi interrogalo.
Se ciò non è possibile, è necessario esaminare le varie cose che potrebbero causare il caricamento dell'intera tabella in locale da parte del server SQL. Ad esempio usando GETDATE()
o anche alcuni join. Altri killer delle 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.