Formát by měl být pravděpodobně:
<server>.<database>.<schema>.<table>
Například:Databázový server1.db1.dbo.table1
Aktualizovat :Vím, že je to stará otázka a odpověď, kterou mám, je správná; nicméně si myslím, že každý, kdo na to narazí, by měl vědět pár věcí.
Konkrétně při dotazu na propojený server v situaci spojení CELÉ tabulka z propojeného serveru bude pravděpodobná být stažen na server, ze kterého se dotaz provádí, aby bylo možné provést operaci spojení. V případě OP oba table1
z DB1
a table1
z DB2
budou v celém rozsahu přeneseny na server provádějící dotaz, pravděpodobně s názvem DB3
.
Pokud máte velké stoly, může výsledkem je operace, jejíž provedení trvá dlouho. Koneckonců je nyní omezena rychlostí síťového provozu, která je řádově nižší než přenosová rychlost paměti nebo dokonce disku.
Je-li to možné, proveďte jediný dotaz proti vzdálenému serveru, aniž byste se připojovali k místní tabulce, abyste získali potřebná data do dočasné tabulky. Pak se na to zeptej.
Pokud to není možné, musíte se podívat na různé věci, které by způsobily, že SQL server bude muset načíst celou tabulku lokálně. Například pomocí GETDATE()
nebo dokonce určitá spojení. Mezi další vrahy výkonu patří neposkytnutí příslušných práv.
Další informace najdete na http://thomaslarock.com/2013/05/top-3-performance-killers-for-linked-server-queries/.