Entwicklung

Verbindungszeichenfolgen richtig konfigurieren - Ein Entwickler-Guide

Habt ihr euch auch schon mal gefragt, warum eure Datenbank-Verbindung in der Produktion nicht läuft, obwohl lokal alles perfekt funktioniert? Oder seid ihr unsicher, wie man Connection Strings richtig absichert? Keine Sorge, das geht vielen so! Lasst uns gemeinsam durch die wichtigsten Aspekte gehen.

Admin 28.02.25
SQL-ServerIISVisual StudioVisual Studio CodeEntwicklung
Verbindungszeichenfolgen richtig konfigurieren - Ein Entwickler-Guide

Verbindungszeichenfolgen richtig konfigurieren

Hey Entwickler! 👋

Habt ihr euch auch schon mal gefragt, warum eure Datenbank-Verbindung in der Produktion nicht läuft, obwohl lokal alles perfekt funktioniert? Oder seid ihr unsicher, wie man Connection Strings richtig absichert? Keine Sorge, das geht vielen so! Lasst uns gemeinsam durch die wichtigsten Aspekte gehen.

Das Grundproblem

Eine der häufigsten Fehlerquellen in Anwendungen ist die Datenbankkonfiguration. Viele Entwickler kopieren einfach Connection Strings aus Beispielen oder Stack Overflow, ohne die einzelnen Parameter zu verstehen. Das führt oft zu:

  • Sicherheitslücken
  • Performance-Problemen
  • Instabilen Verbindungen
  • Datenlecks durch versehentlich commitete Passwörter

Die Anatomie eines Connection Strings

Schauen wir uns mal einen typischen Connection String an:

Server=myserver.com;
Database=MyDB;
User ID=sa;
Password=SuperSecret123;
MultipleActiveResultSets=true;
Encrypt=True;
Connection Timeout=30;

Die wichtigsten Parameter erklärt

  1. Server/Data Source
  • Was es ist: Der Name oder die IP deines Datenbankservers
  • Best Practice: In Produktion immer FQDN oder IP verwenden
  • Entwicklung: localhost ist okay
  1. Database
  • Was es ist: Name deiner Datenbank
  • Tipp: Unterschiedliche Namen für Dev/Prod verwenden
  1. Authentication
  • User ID und Password: Die Zugangsdaten
  • 🚨 NIEMALS das Passwort im Connection String hart codieren!
  • Verwende Environment Variables (mehr dazu später)
  1. Security
  • Encrypt=True: Verschlüsselt die Verbindung
  • TrustServerCertificate: Nur in Entwicklung auf false setzen
  • Produktion: Immer Verschlüsselung aktivieren!
  1. Performance
  • Max Pool Size: Maximale Anzahl gleichzeitiger Verbindungen
  • Min Pool Size: Minimale Anzahl bereiter Verbindungen
  • Connection Timeout: Zeit bis zum Abbruch eines Verbindungsversuchs
  • Command Timeout: Zeit bis zum Abbruch einer Datenbankoperation
  1. Resilienz
  • ConnectRetryCount: Anzahl der Wiederholungsversuche
  • ConnectRetryInterval: Wartezeit zwischen Versuchen


Das Passwort-Problem lösen

Das Wichtigste zuerst: Niemals Passwörter in der Versionskontrolle speichern!

Stattdessen:

  1. Verwendet Environment Variables:
# Windows
set DB_PASSWORT=MeinSuperGeheimesPasswort

# Linux/macOS
export DB_PASSWORT=MeinSuperGeheimesPasswort
  1. Im Connection String dann:
Password=#{DB_PASSWORT}

oder

Password=DB_PASSWORT
  1. In der Anwendung:
var dbPassword = Environment.GetEnvironmentVariable("DB_PASSWORT");
connectionString = connectionString.Replace("DB_PASSWORT", dbPassword);

Dev vs. Prod - Different Environments, Different Needs

Entwicklungsumgebung

Server=localhost;
Database=MyApp_Dev;
User ID=sa;
Password=DB_PASSWORT;
MultipleActiveResultSets=true;
Encrypt=false;
Connection Timeout=15;
Max Pool Size=20;
Min Pool Size=5;
Application Name=MyApp-Dev;
ConnectRetryCount=1;
ConnectRetryInterval=5;
Command Timeout=30
  • Kürzere Timeouts für schnelles Feedback
  • Kleinere Connection Pools
  • SSL optional
  • Schnelles Debugging wichtiger als Optimierung

Produktionsumgebung

Server=prod-server.com;
Database=MyApp_Prod;
User ID=sa;
Password=DB_PASSWORT;
MultipleActiveResultSets=true;
Encrypt=True;
Connection Timeout=30;
Max Pool Size=100;
Min Pool Size=10;
Application Name=MyApp;
ConnectRetryCount=3;
ConnectRetryInterval=10;
Command Timeout=60
  • Höhere Timeouts für Stabilität
  • Größere Connection Pools
  • SSL/TLS Pflicht
  • Optimierung für hohe Last

Pro-Tipps für robuste Verbindungen

  1. Monitoring einrichten
  • Application Name hilft bei der Identifikation in Logs
  • Verschiedene Namen für Dev/Prod verwenden
  • SQL Server DMVs für Performance-Monitoring nutzen
  1. Connection Pooling optimieren
  • Prod: Größere Pools (Max=100, Min=10)
  • Dev: Kleinere Pools (Max=20, Min=5)
  • Pool-Größe = erwartete gleichzeitige Verbindungen × 1.5
  1. Fehlerbehandlung
  • Retry-Logic implementieren
  • Sinnvolle Timeouts setzen
  • Verbindungen immer disposed
  1. Sicherheit
  • Prod: Immer SSL/TLS
  • Minimale Berechtigungen vergeben
  • Regelmäßige Passwort-Rotation

Fazit

Eine gut konfigurierte Datenbankverbindung ist das Fundament einer stabilen Anwendung. Nehmt euch die Zeit, die Parameter zu verstehen und anzupassen. Und denkt dran:

  1. Passwörter gehören in Environment Variables
  2. Dev und Prod brauchen unterschiedliche Konfigurationen
  3. Security first - besonders in Produktion
  4. Performance durch richtiges Pooling
  5. Monitoring nicht vergessen

Happy Coding! 🚀

P.S.: Habt ihr schon mal eine Prod-DB mit dem Dev-Passwort deployed? Keine Sorge, das ist uns allen schon passiert. Deshalb: Environment Variables! 😉

Mehr zum Thema

Blazor Ressourcen in privaten Browserfenstern

Wie Blazor statische Ressourcen im normalen und auch privaten Browsermodus korrekt lädt

Admin 09.03.25
Anmeldung zum Newsletter
Erhalte Infos zu neuen Inhalten und Aktionen in unregelmäßiger Folge direkt in deinen Posteingang. Es ist kostenlos und du kannst dich jederzeit abmelden. Keine Sorge, ich hasse Spam genauso wie du: also spamme ich nicht!
An unhandled error has occurred. Reload 🗙