sql >> Database teknologi >  >> RDS >> Sqlserver

Opret en sammenkædet server mellem to Docker-containere, der kører SQL Server (T-SQL-eksempel)

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.


  1. Bedste datatype til at gemme pengeværdier i MySQL

  2. Hvorfor forespørgslen ikke gemmer i csv-fil, mens det virker normalt i postgresql-konsollen

  3. Hvordan forskønner man det output, der kommer fra SELECT-forespørgslen i kommandoprompten?

  4. SQL-serveren svarende til GROUP_CONCAT()