Denne artikel gennemgår processen med at oprette en linket server fra en SQL Server-instans på én Docker-beholder til en SQL Server-instans på en anden Docker-beholder. Begge Docker-containere er på samme maskine.
Processen er nøjagtig den samme, som du ville bruge til at oprette en hvilken som helst linket server (for eksempel selvom SQL Server-instanserne var på separate maskiner og ikke kørte i en Docker-container).
Alle eksempler her bruger Transact-SQL. Dette giver dig mulighed for at oprette den sammenkædede server uden at være afhængig af en grafisk brugergrænseflade (såsom SSMS).
Opret den sammenkædede server
For at oprette en sammenkædet server ved hjælp af T-SQL skal du udføre sp_addlinkedserver
gemt procedure, mens den videregiver navnet på den linkede server såvel som dens kilde.
Her er et eksempel på oprettelse af en linket server:
EXEC sp_addlinkedserver @server=N'Homer', @srvproduct=N'', @provider=N'MSOLEDBSQL', @datasrc=N'172.17.0.2,1433';
I dette tilfælde er det linkede servernavn Homer, og jeg angiver IP-adressen på Docker-beholderen efterfulgt af TCP-porten. Skift servernavn og IP-adresse/port efter behov.
Du kan finde IP-adressen på din Docker-container ved at køre følgende kode i et terminalvindue:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' Homer
Hvis det ikke virker, så prøv den ældre metode:
docker inspect -f"{{.NetworkSettings.IPAddress}}" Homer
Skift containernavnet efter behov.
Test den sammenkædede server
Nu hvor du har tilføjet den linkede server, kan du bruge sp_testlinkedserver
for at teste det:
EXEC sp_testlinkedserver Homer;
Resultat (hvis vellykket):
Commands completed successfully.
Login mislykkedes?
Hvis du får fejlen "Login mislykkedes", er chancerne for, at du ikke har et tilsvarende login på fjernserveren. Du skal have et tilsvarende login med de samme legitimationsoplysninger som på den lokale server.
Alternativt kan du oprette et separat login kun for den linkede server.
Se Opret en sammenkædet server i SQL Server (T-SQL-eksempel) for flere detaljer og eksempler på at gøre dette. Denne artikel bruger de samme detaljer for den linkede server som dem i denne artikel. Den har også et eksempel på at køre en distribueret forespørgsel og en pass-through-forespørgsel på den linkede server, når den er blevet konfigureret.
Slip en linket server
Her er et eksempel på at droppe den linkede server kaldet "Homer" og alle tilknyttede logins.
EXEC sp_dropserver 'Homer', 'droplogins';
droplogins
argument er valgfrit, men hvis du ikke angiver dette, når du dropper en sammenkædet server, der har tilknyttede eksterne og sammenkædede serverloginposter, eller er konfigureret som en replikeringsudgiver, returneres en fejlmeddelelse.
Se Fjern en sammenkædet server ved hjælp af T-SQL for flere eksempler.