sql >> Database >  >> RDS >> Sqlserver

Maak een gekoppelde server tussen twee Docker-containers met SQL Server (T-SQL-voorbeeld)

Dit artikel doorloopt het proces van het maken van een gekoppelde server van een SQL Server-instantie op de ene Docker-container naar een SQL Server-instantie op een andere Docker-container. Beide Docker-containers staan ​​op dezelfde machine.

Het proces is precies hetzelfde dat u zou gebruiken om een ​​gekoppelde server te maken (bijvoorbeeld zelfs als de SQL Server-instanties zich op afzonderlijke machines bevonden en niet in een Docker-container draaiden).

Alle voorbeelden hier gebruiken Transact-SQL. Hierdoor kunt u de gekoppelde server maken zonder afhankelijk te zijn van een grafische gebruikersinterface (zoals SSMS).

Maak de gekoppelde server

Om een ​​gekoppelde server te maken met T-SQL, voert u de sp_addlinkedserver . uit opgeslagen procedure terwijl de naam van de gekoppelde server en de bron worden doorgegeven.

Hier is een voorbeeld van het maken van een gekoppelde server:

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

In dit geval is de naam van de gekoppelde server Homer en specificeer ik het IP-adres van de Docker-container, gevolgd door de TCP-poort. Wijzig indien nodig de servernaam en het IP-adres/de poort.

U kunt het IP-adres van uw Docker-container vinden door de volgende code in een terminalvenster uit te voeren:

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

Als dat niet werkt, probeer dan de oudere methode:

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

Wijzig de containernaam indien nodig.

Test de gekoppelde server

Nu je de gekoppelde server hebt toegevoegd, kun je sp_testlinkedserver . gebruiken om het te testen:

EXEC sp_testlinkedserver Homer;

Resultaat (indien succesvol):

Commands completed successfully.

Aanmelden mislukt?

Als u de foutmelding "Aanmelden mislukt" krijgt, is de kans groot dat u geen overeenkomstige aanmelding op de externe server hebt. U moet een overeenkomstige login hebben met dezelfde inloggegevens als die op de lokale server.

U kunt ook een aparte login aanmaken voor alleen de gekoppelde server.

Zie Een gekoppelde server maken in SQL Server (T-SQL-voorbeeld) voor meer details en voorbeelden om dit te doen. Dat artikel gebruikt dezelfde details voor de gekoppelde server als die in dit artikel. Het heeft ook een voorbeeld van het uitvoeren van een gedistribueerde query en een pass-through-query op de gekoppelde server zodra deze is geconfigureerd.

Laat een gekoppelde server vallen

Hier is een voorbeeld van het verwijderen van de gekoppelde server genaamd "Homer" en alle bijbehorende logins.

EXEC sp_dropserver 'Homer', 'droplogins';

De droplogins argument is optioneel, maar als u dit niet opgeeft bij het verwijderen van een gekoppelde server met gekoppelde externe en gekoppelde serveraanmeldingen, of is geconfigureerd als een replicatie-uitgever, wordt een foutbericht geretourneerd.

Zie Een gekoppelde server verwijderen met T-SQL voor meer voorbeelden.


  1. Beperking van gegevensrisico's via gegevensmaskering

  2. MySQL-opgeslagen procedures gebruiken ze of niet om ze te gebruiken

  3. 2 manieren om rijen te retourneren die geen numerieke waarden bevatten in Oracle

  4. Meerdere indexen versus indexen met meerdere kolommen