Aufgabe 2: Microsoft SQL Server
Du erstellst einen Microsoft SQL Server mit Docker Compose und verbindest dich mit einem Client.
Voraussetzungen
Abschnitt betitelt „Voraussetzungen“- Mindestens 2 GB RAM für den Container
- Docker läuft auf einem 64-bit System
Aufgaben
Abschnitt betitelt „Aufgaben“1. Docker Compose Datei erstellen
Abschnitt betitelt „1. Docker Compose Datei erstellen“Erstelle eine neue Datei docker-compose.yml (oder erweitere die bestehende):
services: mssql: image: mcr.microsoft.com/mssql/server:2022-latest container_name: mssql-lab restart: unless-stopped environment: ACCEPT_EULA: "Y" MSSQL_SA_PASSWORD: "YourStrong@Passw0rd" MSSQL_PID: "Developer" ports: - "1433:1433" volumes: - mssql_data:/var/opt/mssql
volumes: mssql_data:2. Container starten
Abschnitt betitelt „2. Container starten“docker compose up -dPrüfe ob der Container läuft:
docker compose ps3. Warten bis SQL Server bereit ist
Abschnitt betitelt „3. Warten bis SQL Server bereit ist“docker compose logs -f mssqlWarte bis du siehst:
SQL Server is now ready for client connections.Drücke Ctrl+C um die Logs zu beenden.
4. Mit SQL Server verbinden
Abschnitt betitelt „4. Mit SQL Server verbinden“Option A: Mit sqlcmd im Container
docker exec -it mssql-lab /opt/mssql-tools18/bin/sqlcmd \ -S localhost -U sa -P "YourStrong@Passw0rd" \ -C -Q "SELECT @@VERSION"Option B: Mit Azure Data Studio (empfohlen)
- Download: Azure Data Studio
- Neue Verbindung erstellen:
- Server:
localhost,1433 - Authentication: SQL Login
- User:
sa - Password:
YourStrong@Passw0rd - Trust server certificate: Ja
- Server:
Option C: Mit DBeaver
- Neue Verbindung → SQL Server
- Verbindungsdaten:
- Host:
localhost - Port:
1433 - Database:
master - User:
sa - Password:
YourStrong@Passw0rd
- Host:
5. Datenbank erstellen und testen
Abschnitt betitelt „5. Datenbank erstellen und testen“Verbinde dich und führe aus:
-- Neue Datenbank erstellenCREATE DATABASE StudentDB;GO
-- Zur neuen Datenbank wechselnUSE StudentDB;GO
-- Tabelle erstellenCREATE TABLE Courses ( CourseID INT IDENTITY(1,1) PRIMARY KEY, CourseName NVARCHAR(100) NOT NULL, Credits INT, CreatedAt DATETIME DEFAULT GETDATE());GO
-- Daten einfügenINSERT INTO Courses (CourseName, Credits) VALUES ('Datenbanken', 5), ('IT Security', 4), ('Netzwerke', 4);GO
-- Daten abfragenSELECT * FROM Courses;GO6. Datenbanken auflisten
Abschnitt betitelt „6. Datenbanken auflisten“SELECT name, create_dateFROM sys.databasesWHERE name NOT IN ('master', 'tempdb', 'model', 'msdb');GO7. Container stoppen
Abschnitt betitelt „7. Container stoppen“# Container stoppendocker compose stop
# Container und Netzwerk entfernen (Daten bleiben)docker compose down
# Alles inkl. Daten löschendocker compose down -vBeide Datenbanken zusammen
Abschnitt betitelt „Beide Datenbanken zusammen“Du kannst MySQL und MSSQL in einer docker-compose.yml kombinieren:
services: mysql: image: mysql:8.0 container_name: mysql-lab restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: rootpassword MYSQL_DATABASE: testdb MYSQL_USER: student MYSQL_PASSWORD: studentpass ports: - "3306:3306" volumes: - mysql_data:/var/lib/mysql
mssql: image: mcr.microsoft.com/mssql/server:2022-latest container_name: mssql-lab restart: unless-stopped environment: ACCEPT_EULA: "Y" MSSQL_SA_PASSWORD: "YourStrong@Passw0rd" MSSQL_PID: "Developer" ports: - "1433:1433" volumes: - mssql_data:/var/opt/mssql
volumes: mysql_data: mssql_data:Beide starten:
docker compose up -dFragen zur Reflexion
Abschnitt betitelt „Fragen zur Reflexion“- Was ist der Unterschied zwischen der “Developer” und “Express” Edition von SQL Server?
- Warum muss man
ACCEPT_EULA: "Y"setzen? - Wie würdest du die Container-Logs überwachen, wenn ein Problem auftritt?
- Was sind die Vor- und Nachteile von containerisierten Datenbanken gegenüber nativen Installationen?
Troubleshooting
Abschnitt betitelt „Troubleshooting“”This container is running on ARM64…”
Abschnitt betitelt „”This container is running on ARM64…”“Auf Apple Silicon (M1/M2/M3):
services: mssql: image: mcr.microsoft.com/azure-sql-edge:latest # ... rest bleibt gleich, aber MSSQL_PID entfernenAzure SQL Edge ist eine leichtere Version, die auf ARM läuft.
”Password validation failed”
Abschnitt betitelt „”Password validation failed”“Das Passwort erfüllt nicht die Anforderungen. Nutze ein stärkeres Passwort mit:
- Mindestens 8 Zeichen
- Gross- und Kleinbuchstaben
- Ziffern
- Sonderzeichen
Container startet und stoppt sofort
Abschnitt betitelt „Container startet und stoppt sofort“docker compose logs mssqlHäufige Ursache: Zu wenig RAM. SQL Server benötigt min. 2 GB.
Zusammenfassung
Abschnitt betitelt „Zusammenfassung“Du hast gelernt:
- MySQL und MSSQL mit Docker Compose zu deployen
- Dich mit verschiedenen Clients zu verbinden
- Datenbanken und Tabellen zu erstellen
- Container zu verwalten (start/stop/logs)
Zurück zur Lab-Übersicht →