Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Odpytywanie danych poprzez łączenie dwóch tabel w dwie bazy danych na różnych serwerach

Będziesz musiał użyć sp_addlinkedserver aby utworzyć łącze do serwera. Zobacz dokumentację referencyjną do użycia. Po ustanowieniu łącza do serwera utworzysz zapytanie w normalny sposób, po prostu poprzedziwszy nazwę bazy danych nazwą innego serwera. Tzn.:

-- FROM DB1
SELECT *
FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1
    INNER JOIN [DB2].[MyDatabaseOnDB2].[dbo].[MyOtherTable] tab2
        ON tab1.ID = tab2.ID

Po ustanowieniu linku możesz również użyć OPENQUERY do wykonania instrukcji SQL na zdalnym serwerze i przesłania tylko danych z powrotem do Ciebie. Może to być nieco szybsze i pozwoli zdalnemu serwerowi zoptymalizować zapytanie. Jeśli buforujesz dane w tymczasowej (lub w pamięci) tabeli w DB1 w powyższym przykładzie będziesz mógł wykonać zapytanie, tak jak dołączenie do standardowej tabeli. Na przykład:

-- 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

Zapoznaj się z dokumentacją OPENQUERY, aby zobaczyć więcej przykładów. Powyższy przykład jest dość wymyślny. Zdecydowanie użyłbym pierwszej metody w tym konkretnym przykładzie, ale drugiej opcji przy użyciu OPENQUERY może zaoszczędzić trochę czasu i wydajności, jeśli użyjesz zapytania do odfiltrowania niektórych danych.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak określić liczbę dni w miesiącu w SQL Server?

  2. Modyfikowanie harmonogramu agentów serwera SQL (T-SQL)

  3. serwer sql wybierz pierwszy wiersz z grupy

  4. SQL Server 2008 Pusty ciąg a spacja

  5. Powody, dla których warto uaktualnić do SQL Server 2017