Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Запитване на данни чрез обединяване на две таблици в две бази данни на различни сървъри

Ще трябва да използвате sp_addlinkedserver за създаване на връзка към сървъра. Вижте справочната документация за употреба. След като връзката към сървъра бъде установена, ще изградите заявката както обикновено, като просто поставите префикс на името на базата данни с другия сървър. I.E:

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

След като връзката бъде установена, можете също да използвате OPENQUERY да изпълни SQL оператор на отдалечения сървър и да прехвърли само данните обратно към вас. Това може да бъде малко по-бързо и ще позволи на отдалечения сървър да оптимизира вашата заявка. Ако кеширате данните във временна (или в памет) таблица на DB1 в примера по-горе, тогава ще можете да го заявите точно като присъединяване към стандартна таблица. Например:

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

Вижте документацията за OPENQUERY, за да видите още няколко примера. Примерът по-горе е доста измислен. Определено бих използвал първия метод в този конкретен пример, но вторият вариант използва OPENQUERY може да спести известно време и производителност, ако използвате заявката, за да филтрирате някои данни.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да сравня 2 реда от една и съща таблица (SQL Server)?

  2. Екраниране на единични кавички в SQL Server

  3. В SQL, как можете да групирате по диапазони?

  4. OPTION (RECOMPILE) е винаги по-бърз; Защо?

  5. Кога да се използва EXCEPT вместо NOT EXISTS в Transact SQL?