Formatet skal sandsynligvis være:
...
For eksempel:DatabaseServer1.db1.dbo.table1
Opdater :Jeg ved, at dette er et gammelt spørgsmål, og det svar, jeg har, er korrekt; dog tror jeg, at enhver anden, der støder på dette, burde vide et par ting.
Nemlig, når du forespørger mod en linket server i en joinsituation, er HELE tabel fra den linkede server vil sandsynligvis downloades til den server, forespørgslen udføres fra, for at udføre join-operationen. I OP's tilfælde er både tabel1
fra DB1
og tabel1
fra DB2
vil blive overført i deres helhed til serveren, der udfører forespørgslen, formentlig kaldet DB3
.
Hvis du har store borde, kan dette må resultere i en operation, der tager lang tid at udføre. Når alt kommer til alt er den nu begrænset af netværkstrafikhastigheder, som er størrelsesordener langsommere end hukommelses- eller endda diskoverførselshastigheder.
Hvis det er muligt, skal du udføre en enkelt forespørgsel mod fjernserveren uden at slutte sig til en lokal tabel for at trække de data, du har brug for, ind i en midlertidig tabel. Så spørg fra det.
Hvis det ikke er muligt, så skal du se på de forskellige ting, der ville få SQL-serveren til at skulle indlæse hele tabellen lokalt. For eksempel ved at bruge GETDATE()
eller endda visse joinforbindelser. Andre præstationsdræbere omfatter ikke at give passende rettigheder.
Se http://thomaslarock.com/2013/05/top-3-performance-killers-for-linked-server-queries/ for mere information.
Hvad gør Statement.setFetchSize(nSize)-metoden virkelig i SQL Server JDBC-driveren?
Sådan opretter du flere en til ens