Laden...

SSMS: Verbindung zu SQL-Server aus Docker-Container herstellen

Erstellt von Davaaron vor 3 Jahren Letzter Beitrag vor 3 Jahren 639 Views
D
Davaaron Themenstarter:in
106 Beiträge seit 2016
vor 3 Jahren
SSMS: Verbindung zu SQL-Server aus Docker-Container herstellen

verwendetes Datenbanksystem: SQL Server

Hallo,

ich habe eine Entwicklungsumgebung vorliegen, bei der ein Docker-Image erstellt wird und in einem Docker-Container läuft. Das Image ist ein mssql-Image und dort wird eine DB inklusive Seeding und Migration erstellt.
Nun würde ich gerne von meinem Host über SQL Server Management Studio (SSMS) auf diese Datenbank zugreifen. Der ConnectionString für die DB beinhaltet

Data Source=localhost

sowie eine User ID und ein Passwort.
Versuche ich nun über SSMS diese Credentials (SQL Authentifizierung) einzugeben und trage als Servername "localhost" ein, bekomme ich einen Fehler:
"Fehler bei der Anmeldung für den Benutzer "sa" (Microsoft SQL Server, Fehler: 18456)"

Verwende ich statt der SQL Auth Methode die Windows Auth Methode, dann komme ich auf meine localhost Datenbank, allerdings ist dies nicht die DB aus dem Docker.

Hat jemand eine Idee, wie ich auf die Docker DB zugreifen kann? Leider kann ich an der docker-Datei nichts ändern.

16.807 Beiträge seit 2008
vor 3 Jahren

Von Deinem Host auf den Docker Container zugreifen ist einfach:
Container muss nen Port gesetzt haben und dann kannst über Localhost zugreifen (ohne Port gehts nicht).

Ich erstell diesen so:
docker create --name mssql -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=P4ssword" -p 31000:1433 -d <imagename>

Dann kann ich auf Docker for Desktop über localhost,31000 zugreifen.

Container zu Container Kommunikation (sofern Du das brauchst) musst extra einrichten.
Localhost geht dann als Adresse natürlich nicht, weil Du die interne Container-IP brauchst, weil es dann nicht mehr über den Ingress geht.

D
Davaaron Themenstarter:in
106 Beiträge seit 2016
vor 3 Jahren

Ok, ich probiere es mal. Ich hoffe mal, dass die anderen Services dann dennoch auf die Datenbank zugreifen können 😄

Danke schon mal.

Edit: Super, hat einwandfrei funktioniert! Jetzt kann ich mich auch über SSMS einloggen und die Applikation läuft dennoch ganz normal, macht ja aber auch Sinn, weil die 31000 nur von Docker aus "exposed" wird und intern immer noch die 1433 genutzt wird.