sql >> Databasteknik >  >> RDS >> Sqlserver

Skapa en länkad server mellan två Docker-behållare som kör SQL Server (T-SQL-exempel)

Den här artikeln går igenom processen att skapa en länkad server från en SQL Server-instans på en Docker-behållare till en SQL Server-instans på en annan Docker-behållare. Båda Docker-containrarna är på samma maskin.

Processen är exakt densamma som du skulle använda för att skapa en länkad server (till exempel även om SQL Server-instanserna fanns på separata maskiner och inte kördes i en Docker-behållare).

Alla exempel här använder Transact-SQL. Detta gör att du kan skapa den länkade servern utan att förlita dig på ett grafiskt användargränssnitt (som SSMS).

Skapa den länkade servern

För att skapa en länkad server med T-SQL, kör sp_addlinkedserver lagrad procedur samtidigt som den skickar in namnet på den länkade servern samt dess källa.

Här är ett exempel på hur du skapar en länkad server:

EXEC sp_addlinkedserver 
    @server=N'Homer', 
    @srvproduct=N'', 
    @provider=N'MSOLEDBSQL', 
    @datasrc=N'172.17.0.2,1433';

I det här fallet är det länkade servernamnet Homer och jag anger IP-adressen för Docker-behållaren, följt av TCP-porten. Ändra servernamn och IP-adress/port efter behov.

Du kan hitta IP-adressen för din Docker-behållare genom att köra följande kod i ett terminalfönster:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' Homer

Om det inte fungerar, prova den äldre metoden:

docker inspect -f"{{.NetworkSettings.IPAddress}}" Homer

Ändra behållarens namn efter behov.

Testa den länkade servern

Nu när du har lagt till den länkade servern kan du använda sp_testlinkedserver för att testa det:

EXEC sp_testlinkedserver Homer;

Resultat (om framgångsrikt):

Commands completed successfully.

Inloggning misslyckades?

Om du får felet "Inloggning misslyckades" är chansen stor att du inte har en motsvarande inloggning på fjärrservern. Du måste ha en motsvarande inloggning med samma referenser som den på den lokala servern.

Alternativt kan du skapa en separat inloggning bara för den länkade servern.

Se Skapa en länkad server i SQL Server (T-SQL-exempel) för mer information och exempel på hur du gör detta. Den artikeln använder samma information för den länkade servern som de i den här artikeln. Den har också ett exempel på att köra en distribuerad fråga och en pass-through-fråga på den länkade servern när den väl har konfigurerats.

Släpp en länkad server

Här är ett exempel på att ta bort den länkade servern som heter "Homer" och alla associerade inloggningar.

EXEC sp_dropserver 'Homer', 'droplogins';

droplogins argument är valfritt, men om du inte anger detta när du släpper en länkad server som har associerade fjärr- och länkade serverinloggningsposter, eller är konfigurerad som en replikeringsutgivare, returneras ett felmeddelande.

Se Ta bort en länkad server med T-SQL för fler exempel.


  1. 4 sätt att kontrollera om en tabell finns innan du släpper den i SQL Server (T-SQL)

  2. Utmaningar med att skala Moodle PostgreSQL-databasen

  3. Hur får man fram alla kolumnernamn för alla tabeller i MySQL?

  4. Ställ in en allmän standardprofil för databaspost (SSMS)