Sie müssen sp_addlinkedserver
verwenden um einen Serverlink zu erstellen. Informationen zur Verwendung finden Sie in der Referenzdokumentation. Sobald die Serververbindung hergestellt ist, konstruieren Sie die Abfrage wie gewohnt, indem Sie dem Datenbanknamen einfach den anderen Server voranstellen. D.h.:
-- FROM DB1
SELECT *
FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1
INNER JOIN [DB2].[MyDatabaseOnDB2].[dbo].[MyOtherTable] tab2
ON tab1.ID = tab2.ID
Sobald die Verknüpfung hergestellt ist, können Sie auch OPENQUERY
verwenden um eine SQL-Anweisung auf dem Remote-Server auszuführen und nur die Daten an Sie zurückzusenden. Dies kann etwas schneller sein und lässt den Remote-Server Ihre Abfrage optimieren. Wenn Sie die Daten in einer temporären (oder speicherinternen) Tabelle auf DB1
zwischenspeichern im obigen Beispiel, dann können Sie sie genauso abfragen wie das Verknüpfen einer Standardtabelle. Zum Beispiel:
-- Fetch data from the other database server
SELECT *
INTO #myTempTable
FROM OPENQUERY([DB2], 'SELECT * FROM [MyDatabaseOnDB2].[dbo].[MyOtherTable]')
-- Now I can join my temp table to see the data
SELECT * FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1
INNER JOIN #myTempTable tab2 ON tab1.ID = tab2.ID
Sehen Sie sich die Dokumentation für OPENQUERY an, um weitere Beispiele zu sehen. Das obige Beispiel ist ziemlich konstruiert. Ich würde in diesem speziellen Beispiel definitiv die erste Methode verwenden, aber die zweite Option mit OPENQUERY
kann etwas Zeit und Leistung sparen, wenn Sie die Abfrage verwenden, um einige Daten herauszufiltern.