====== 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}}