sql >> Databasteknik >  >> RDS >> Sqlserver

Exempelfråga för SQL Server Linked Server

Formatet bör förmodligen vara:

<server>.<database>.<schema>.<table>

Till exempel:DatabaseServer1.db1.dbo.table1

Uppdatera :Jag vet att detta är en gammal fråga och svaret jag har är korrekt; dock tror jag att någon annan som snubblar över detta borde veta några saker.

Nämligen, när man frågar mot en länkad server i en anslutningssituation är HELA tabell från den länkade servern sannolikt laddas ner till servern som frågan körs från för att utföra join-operationen. I OP:s fall, både table1 från DB1 och table1 från DB2 kommer att överföras i sin helhet till servern som kör frågan, förmodligen med namnet DB3 .

Om du har stora bord kan detta resultera i en operation som tar lång tid att utföra. När allt kommer omkring är den nu begränsad av nätverkstrafikhastigheter som är storleksordningar långsammare än minnes- eller till och med disköverföringshastigheter.

Om möjligt, utför en enda fråga mot fjärrservern, utan att gå med i en lokal tabell, för att dra de data du behöver till en tillfällig tabell. Fråga sedan om det.

Om det inte är möjligt måste du titta på de olika sakerna som skulle göra att SQL-servern måste ladda hela tabellen lokalt. Till exempel med GETDATE() eller till och med vissa anslutningar. Andra prestationsdödare inkluderar att inte ge lämpliga rättigheter.

Se http://thomaslarock.com/2013/05/top-3-performance-killers-for-linked-server-queries/ för mer information.



  1. Postgres misslyckas med 'kunde inte öppna relationsmappningsfilen global/pg_filenode.map'

  2. Oracle-klienten och nätverkskomponenter hittades inte

  3. Så här åtgärdar du ett fel för överskriden låsväntetid i MySQL

  4. SQLite infogar inte data i den andra tabellen