Met een linked server maak je vanuit SQL Server Management Studio (SSMS) verbinding met een andere (remote) database of een bestand (Xls, CSV) en bekijk je de data of objecten. Je kunt vanuit je SSMS SQL-queries direct op een database op een andere machine schrijven. In Oracle heet dit DBLinks (Database Links).
Je kunt bijvoorbeeld een view maken in een database die data haalt uit een database op een andere machine. Cool toch? De andere database kan SQL Server zijn, Oracle of een andere ondersteunde database. Ik gebruik linked servers om verbinding te maken met al mijn bronsystemen in een datawarehouse/BI-omgeving. Vraagt iemand me om een getal te controleren, dan check ik de brondata altijd binnen een paar seconden met een query via een linked server. Ik leg je uit hoe je een linked server toevoegt in SQL Server.
Een linked server maken
Een linked server opzetten in SQL Server is geen moeilijk klusje. Je zet een linked server op met een SQL-statement of via de grafische interface in SSMS. Ik heb deze linked server opgezet in SQL Server 2008 R2, maar het zou ook in hogere versies van SQL Server moeten werken.
Linked server met SQL:
-- Add Linked ServerEXEC master.dbo.sp_addlinkedserver@server = N'ServerName', @srvproduct=N'ServerName\InstanceName', @provider=N'SQLNCLI10', @datasrc=N'ServerName\InstanceName', @catalog=N'DatabaseName'
-- Add Credentials to the Linked ServerEXEC master.dbo.sp_addlinkedsrvlogin@rmtsrvname=N'ServerName',@useself=N'False',@locallogin=NULL,@rmtuser=N'Domain\UserName',@rmtpassword='Password'Linked server via de GUI van SSMS:
Klap in SSMS de map “Server Objects” open, klik met rechts op “Linked Servers” -> New Linked Server. Vul nu alle velden in. De video hieronder laat zien hoe je een linked server maakt naar een SQL Server database met een instance. Klik op de afbeelding voor een popup met een grote video van hoe je er een maakt!
De configuratie van linked servers bekijken
In SSMS open je de map “Linked Servers” om alle linked servers op de SQL instance te zien. Je kunt ook alle linked servers opvragen met dit SQL-commando:
EXEC sp_linkedserversDe tabellen van een linked server bekijken
Soms is het heel nuttig om te zien welke tabellen er in je linked server zitten. Dat is handig als je een AS400 database (DB2) doorzoekt. De system stored procedure sp_tables toont de tabellen in de huidige database van de huidige server. En als je hetzelfde wilt weten voor de linked server? Dan gebruik je sp_tables_ex:
EXEC sp_tables_ex 'LinkedServerName'Tabellen queryen via een linked server
Nu komt het belangrijke deel. Is de linked server klaar, dan query je de tabellen of views van de linked server met deze syntax:
SELECT *FROM DWH_NL_UAA_PRD_NLD_SQL.uaa.dbo.rightsMatrixDWH_NL_UAA_PRD_NLD is de naam van de linked server. uaa is de naam van de remote database, dbo de schemanaam en rightsMatrix de naam van de tabel.
Conclusie
Ik hoop dat je hebt geleerd hoe je een linked server toevoegt in SQL Server. Er zijn ook geavanceerde opties: open de “Properties” van de linked server en kies “Server Options”. Die heb je nodig als je een procedure of functie wilt draaien vanaf een linked server. Heb je vragen, laat dan een bericht achter.
Extra: video die laat zien hoe je een linked server maakt
Veelgestelde vragen
Wat is een linked server in SQL Server?
Een linked server verbindt SSMS met een andere remote database of een bestand, zoals Xls of CSV. Je draait SQL-queries op een database op een andere machine. Oracle noemt dit een DBLink.
Hoe maak ik een linked server aan in SQL Server?
Gebruik de stored procedures sp_addlinkedserver en sp_addlinkedsrvlogin, of gebruik SSMS. Klap in SSMS Server Objects open, klik met rechts op Linked Servers, kies New Linked Server en vul de velden in.
Hoe zie ik alle linked servers op een SQL Server instance?
Draai EXEC sp_linkedservers, of open in SSMS de map Linked Servers. Allebei tonen ze alle linked servers op de instance.
Hoe zie ik de tabellen van een linked server?
Draai EXEC sp_tables_ex 'LinkedServerName'. De procedure sp_tables toont de tabellen in de huidige database. De ex-versie doet hetzelfde voor een linked server.
Wat is de syntax om een tabel via een linked server te queryen?
Gebruik een naam uit vier delen: linked server, remote database, schema en tabel. Bijvoorbeeld: SELECT * FROM DWH_NL_UAA_PRD_NLD_SQL.uaa.dbo.rightsMatrix.

Reacties
Gerelateerde blogs
Leeftijd berekenen in SQL Server
Gratis E-Book SQL Server 2016
sp_send_dbmail instellen, inclusief bijlage!