Het formaat zou waarschijnlijk moeten zijn:
<server>.<database>.<schema>.<table>
Bijvoorbeeld:DatabaseServer1.db1.dbo.table1
Bijwerken :Ik weet dat dit een oude vraag is en het antwoord dat ik heb is correct; ik denk echter dat iedereen die hierover struikelt, een paar dingen moet weten.
Namelijk, wanneer een query wordt uitgevoerd op een gekoppelde server in een join-situatie, wordt de VOLLEDIGE tabel van de gekoppelde server zal waarschijnlijk worden gedownload naar de server van waaruit de query wordt uitgevoerd om de join-bewerking uit te voeren. In het geval van de OP, beide table1
van DB1
en table1
van DB2
worden in hun geheel overgedragen naar de server die de query uitvoert, vermoedelijk met de naam DB3
.
Als je grote tafels hebt, is dit misschien resulteren in een operatie die lang duurt om uit te voeren. Per slot van rekening wordt het nu beperkt door snelheden van netwerkverkeer, die orden van grootte langzamer zijn dan geheugen- of zelfs schijfoverdrachtssnelheden.
Voer indien mogelijk een enkele query uit op de externe server, zonder lid te worden van een lokale tabel, om de gegevens die u nodig hebt naar een tijdelijke tabel te halen. Vraag daar dan vanaf.
Als dat niet mogelijk is, moet je kijken naar de verschillende dingen die ervoor zorgen dat de SQL-server de hele tabel lokaal moet laden. Gebruik bijvoorbeeld GETDATE()
of zelfs bepaalde joins. Andere prestatiemoordenaars zijn onder meer het niet geven van de juiste rechten.
Zie http://thomaslarock.com/2013/05/top-3-performance-killers-for-linked-server-queries/ voor meer info.