Verbinden Sie Tabellen über verschiedene Serverdatenbanken hinweg
Beim Abrufen von Daten aus mehreren Tabellen in verschiedenen Datenbanken, die sich auf verschiedenen Servern befinden, gibt es mehrere Möglichkeiten, diese Tabellen effizient zu verknüpfen.
1. Serverlink verwenden
Erstellen Sie Serververbindungen über den Befehl sp_addlinkedserver
, um Verbindungen zwischen Datenbanken herzustellen. Zugriff per Abfrage wie gewohnt, wobei dem Namen des Verbindungsservers der Datenbankname vorangestellt wird, wie im Beispiel gezeigt:
<code class="language-sql">-- 来自 DB1 SELECT * FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1 INNER JOIN [DB2].[MyDatabaseOnDB2].[dbo].[MyOtherTable] tab2 ON tab1.ID = tab2.ID</code>
2. Verwenden Sie OPENQUERY
Erwägen Sie alternativ die Verwendung von OPENQUERY
, um Remote-SQL-Anweisungen auszuführen und Daten von anderen Servern abzurufen. Diese Methode optimiert die Bandbreite und optimiert Abfragen auf dem Remote-Server. Sie können Daten für eine spätere Verbindung in einer temporären oder speicherinternen Tabelle zwischenspeichern, wie im folgenden Beispiel gezeigt:
<code class="language-sql">-- 从其他数据库服务器获取数据 SELECT * INTO #myTempTable FROM OPENQUERY([DB2], 'SELECT * FROM [MyDatabaseOnDB2].[dbo].[MyOtherTable]') -- 现在我可以连接我的临时表以查看数据 SELECT * FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1 INNER JOIN #myTempTable tab2 ON tab1.ID = tab2.ID</code>
Notizen
Die Wahl zwischen Server Link und OPENQUERY
hängt vom spezifischen Anwendungsfall und den Leistungsanforderungen ab. Server-Links stellen eine permanente Verbindung bereit, während OPENQUERY
den temporären Datenabruf ermöglicht. Für Szenarien, die eine Filterung erfordern, ist OPENQUERY
möglicherweise effizienter. Weitere Beispiele und Szenarien finden Sie in der Dokumentation.
Das obige ist der detaillierte Inhalt vonWie kann man Tabellen auf verschiedenen Datenbankservern effizient verknüpfen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!