U moet sp_addlinkedserver
. gebruiken om een serverlink te maken. Zie de referentiedocumentatie voor gebruik. Zodra de serverkoppeling tot stand is gebracht, bouwt u de query op de normale manier op, door de databasenaam vooraf te laten gaan aan de andere server. IE:
-- FROM DB1
SELECT *
FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1
INNER JOIN [DB2].[MyDatabaseOnDB2].[dbo].[MyOtherTable] tab2
ON tab1.ID = tab2.ID
Zodra de koppeling tot stand is gebracht, kunt u ook OPENQUERY
. gebruiken om een SQL-instructie op de externe server uit te voeren en alleen de gegevens naar u terug te sturen. Dit kan iets sneller zijn en de externe server kan uw zoekopdracht optimaliseren. Als u de gegevens in een tijdelijke (of in-memory) tabel op DB1
. plaatst in het bovenstaande voorbeeld, dan kun je er een query op uitvoeren, net als bij een standaardtabel. Bijvoorbeeld:
-- 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
Bekijk de documentatie voor OPENQUERY om nog meer voorbeelden te zien. Het bovenstaande voorbeeld is behoorlijk gekunsteld. Ik zou zeker de eerste methode gebruiken in dit specifieke voorbeeld, maar de tweede optie met OPENQUERY
kan wat tijd en prestaties besparen als u de query gebruikt om bepaalde gegevens uit te filteren.