Budete muset použít sp_addlinkedserver
vytvořit odkaz na server. Informace o použití naleznete v referenční dokumentaci. Jakmile je navázáno spojení se serverem, vytvoříte dotaz jako obvykle, pouze před název databáze přidáte druhý server. I.E:
-- FROM DB1
SELECT *
FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1
INNER JOIN [DB2].[MyDatabaseOnDB2].[dbo].[MyOtherTable] tab2
ON tab1.ID = tab2.ID
Jakmile je propojení vytvořeno, můžete také použít OPENQUERY
provést příkaz SQL na vzdáleném serveru a přenést zpět pouze data. To může být o něco rychlejší a umožní to vzdálenému serveru optimalizovat váš dotaz. Pokud data uložíte do mezipaměti v dočasné (nebo v paměti) tabulce v DB1
ve výše uvedeném příkladu jej budete moci dotazovat stejně jako připojení ke standardní tabulce. Například:
-- 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
Prohlédněte si dokumentaci k OPENQUERY, kde najdete další příklady. Výše uvedený příklad je pěkně vymyšlený. V tomto konkrétním příkladu bych určitě použil první metodu, ale druhou možnost pomocí OPENQUERY
můžete ušetřit čas a výkon, pokud použijete dotaz k odfiltrování některých dat.