Beispielverknüpfung für den SQL Server-Verbindungsserver
Während Sie in Management Studio, ich bin versucht, eine Abfrage ausführen/tun, einen join zwischen zwei verbindungsservern.
Ist das die korrekte syntax der Verwendung von verknüpften db-Server:
select foo.id
from databaseserver1.db1.table1 foo,
databaseserver2.db1.table1 bar
where foo.name=bar.name
Im Grunde tun Sie nur das Vorwort der db-server-name der db.Tabelle ?
InformationsquelleAutor der Frage bmw0128 | 2010-11-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Format sollte wohl sein:
Zum Beispiel:
DatabaseServer1.db1.dbo.Tabelle1
Update: ich weiß, das ist eine alte Frage und die Antwort, die ich habe, ist richtig; aber ich denke, dass jeder ein anderes stolpern auf diesem sollte ein paar Dinge wissen.
Nämlich, wenn eine Abfrage für einen Verbindungsserver in einer join-situation der GESAMTE Tabelle aus der verknüpften server wahrscheinlich heruntergeladen werden, die server die Abfrage ausgeführt wird, um die join-operation. In OP ' s Fall, beide
table1
ausDB1
undtable1
ausDB2
übertragen werden, in Ihrer Gesamtheit auf dem server, der die Abfrage ausführt, vermutlich benanntDB3
.Wenn Sie große Tabellen, kann Ergebnis in einer operation, die dauert eine lange Zeit zum ausführen. Schließlich ist es jetzt eingeschränkt durch Netzwerk-traffic-Geschwindigkeiten, die ist um Größenordnungen langsamer als der Arbeitsspeicher oder auch Festplatten die übertragungsgeschwindigkeiten.
Wenn möglich, führen Sie eine einzelne Abfrage an den remote-server, ohne den Beitritt zu einer lokalen Tabelle, ziehen Sie die Daten, die Sie benötigen in einer temporären Tabelle. Dann die Abfrage aus.
Dass es nicht möglich ist, dann müssen Sie schauen auf die verschiedenen Dinge, die dazu führen würde, dass der SQL-server haben, laden Sie die gesamte Tabelle lokal. Zum Beispiel mit
GETDATE()
oder sogar bestimmte Verknüpfungen. Andere performance-Killer umfassen geben nicht die entsprechenden Rechte.Sehen http://thomaslarock.com/2013/05/top-3-performance-killers-for-linked-server-queries/ für ein paar mehr Infos.
InformationsquelleAutor der Antwort NotMe
Dieser kann Ihnen dabei helfen.
InformationsquelleAutor der Antwort Akhilesh Kamate
Müssen Sie das schema/owner (dbo-Standard) als Teil der Referenz. Auch, es wäre besser, verwenden die neueren (ANSI-92-join-Stil.
InformationsquelleAutor der Antwort Joe Stefanelli
Wenn Sie immer noch finden Problem mit ...
Einschließen server-Namen in []
InformationsquelleAutor der Antwort Mian
Für diejenigen, die Probleme mit diesen anderen Antworten , versuchen
OPENQUERY
Beispiel:
InformationsquelleAutor der Antwort Tom Stickel
Dies ist der richtige Weg zu rufen.
Stellen Sie sicher, dass die Server verknüpft sind, vor dem ausführen der Abfrage!
Prüfen verknüpfte Server Aufruf:
InformationsquelleAutor der Antwort Abhishek Jaiswal
In der Regel direkte Abfragen sollte nicht verwendet werden, im Falle der verknüpften server, weil es stark zu verwenden, temp-Datenbank von SQL server. Im ersten Schritt Daten werden in temp-DB-filtern auftreten. Es gibt viele threads über dieses. Es ist besser, OPENQUERY öffnen, weil es übergibt SQL, um die source-Verbindungsserver und dann zurück gefilterten Ergebnisse z.B.
InformationsquelleAutor der Antwort Muhammad Yaseen
Ich hoffe, es hilft zu verstehen, wie zum ausführen von Abfragen für Verbindungsserver
InformationsquelleAutor der Antwort Jaspreet Singh
Folgende Abfrage ist am besten.
InformationsquelleAutor der Antwort Vijay S
Für was es Wert ist, fand ich die folgende syntax, um die Arbeit der besten:
SELECT * FROM [LINKED_SERVER]...[TABLE]
Ich konnte nicht Holen Sie sich die Empfehlungen anderer zu arbeiten, über den Namen der Datenbank. Darüber hinaus werden diese Daten-Quelle hat kein schema.
InformationsquelleAutor der Antwort Sean Warren
rechten Maustaste auf eine Tabelle, und klicken Sie auf Skript für Tabelle als select
InformationsquelleAutor der Antwort Shimon Doodkin