====== Runbook: DSN verwalten ======
**Dauer:** ~10 Minuten \\
**Rolle:** Gateway-Operator \\
**Voraussetzung:** appsettings.json Zugriff
DSN (Data Source Name) definiert vordefinierte Datenbankverbindungen.
----
===== Workflow =====
flowchart TD
A[DSN-Anforderung] --> B{Neue oder bestehende?}
B -->|Neu| C[appsettings.json bearbeiten]
B -->|Bestehend| D[Verbindung testen]
C --> E[Gateway neustarten]
E --> D
D --> F{Test erfolgreich?}
F -->|Ja| G[Dokumentieren]
F -->|Nein| H[Connection String prüfen]
H --> C
style G fill:#e8f5e9
style H fill:#ffebee
----
===== 1. Bestehende DSN anzeigen =====
# Alle konfigurierten DSN auflisten (API)
curl -s http://localhost:5000/api/v1/dsn | jq
# Oder direkt in Config prüfen
cat appsettings.json | jq '.Gateway.Databases'
----
===== 2. Neue DSN hinzufügen =====
**appsettings.json bearbeiten:**
{
"Gateway": {
"Databases": {
"demo": {
"Provider": "sqlite",
"ConnectionString": "Data Source=data/demo.db"
},
"produktion": {
"Provider": "sqlserver",
"ConnectionString": "Server=sql01;Database=ProdDB;User Id=app;Password=***;TrustServerCertificate=True"
},
"reporting": {
"Provider": "postgresql",
"ConnectionString": "Host=pg01;Database=reports;Username=reader;Password=***"
}
}
}
}
**Unterstützte Provider:**
| Provider | ConnectionString-Beispiel |
|----------|---------------------------|
| ''sqlserver'' | ''Server=host;Database=db;User Id=user;Password=pwd'' |
| ''sqlite'' | ''Data Source=path/file.db'' |
| ''postgresql'' | ''Host=host;Database=db;Username=user;Password=pwd'' |
| ''mysql'' | ''Server=host;Database=db;User=user;Password=pwd'' |
----
===== 3. Gateway neustarten =====
# Windows
Stop-Process -Name "WvdS.WebAPI.Data.Gateway.Api" -Force
Start-Process -FilePath ".\WvdS.WebAPI.Data.Gateway.Api.exe"
# Linux (systemd)
sudo systemctl restart data-gateway
----
===== 4. DSN testen =====
# Tabellen der neuen DSN auflisten
curl -s http://localhost:5000/api/v1/dsn/produktion/tables | jq
# Erste Daten abrufen
curl -s "http://localhost:5000/api/v1/dsn/produktion/tables/Customers?\$top=5" | jq
----
===== 5. DSN entfernen =====
- DSN-Eintrag aus ''appsettings.json'' löschen
- Gateway neustarten
- Prüfen, dass DSN nicht mehr verfügbar ist:
curl -s http://localhost:5000/api/v1/dsn/alte_dsn/tables
# Erwartete Antwort: 404 Not Found
----
===== Checkliste =====
| # | Prüfpunkt | ✓ |
|---|-----------|---|
| 1 | Provider korrekt (sqlserver/sqlite/...) | ☐ |
| 2 | Connection String gültig | ☐ |
| 3 | Passwort nicht im Log sichtbar | ☐ |
| 4 | Gateway neugestartet | ☐ |
| 5 | API-Test erfolgreich | ☐ |
----
===== Troubleshooting =====
| Problem | Ursache | Lösung |
|---------|---------|--------|
| ''Database not found'' | Falsche Datenbank | Datenbankname prüfen |
| ''Login failed'' | Falsches Passwort | Credentials prüfen |
| ''Connection refused'' | Firewall blockiert | Port 1433/5432/3306 freigeben |
| ''Provider not supported'' | Falscher Provider-Name | sqlserver, sqlite, postgresql, mysql |
| ''JSON parse error'' | Syntax-Fehler | JSON validieren (jsonlint.com) |
----
===== Sicherheitshinweise =====
**Passwörter niemals im Klartext loggen!**
Verwende Umgebungsvariablen für Credentials:
"ConnectionString": "Server=sql01;Database=ProdDB;User Id=${DB_USER};Password=${DB_PASS}"
----
===== Verwandte Runbooks =====
* [[.:server-starten|Server starten]] – Nach Config-Änderung
* [[.:health-check|Health Check]] – Verbindung prüfen
* [[..:..:administrator:konfiguration:datenbanken|Datenbank-Konfiguration]] – Detaillierte Referenz
----
<< [[.:server-starten|← Server starten]] | [[.:health-check|→ Health Check]] >>
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Data Gateway Professional//
{{tag>operator runbook dsn datenbank konfiguration}}