Datenbankentwicklung mit VisualStudio

Die Datenbankentwicklung mit Visual Studio für den SQL-Server war ein großer Fortschritt gegenüber der Entwicklung im SQL-Managmentstudio. Der Umstieg auf Visual Studio war am Anfang gewöhnungbedürftig, danach begeistern einem die Möglichkeiten, die sich auftun.

Eigenschaften der Datenbankprojekte

Ein Datenbankprojekt enthält für jedes DB-Objekt eine Datei, die entsprechend des Schemas und des Typs in Ordnern organisiert sind. Dies bedeutet, dass das Projekt den aktuellen Stand der DB darstellt und dieser lesbar ist. Dies ist wichtig, es werden keine Migrationen der DB gespeichert! Ein großer Vorteil ist, dass ein Objekt auch von mehreren Entwicklern verändert werden kann. Dies hat sehr oft einen Merge-Konflikt zur Folge, den kann man aber wie in anderen Programmiersprachen lösen. Das bedeutet auch, das die Verwaltung des Codes in einem Versionsverwaltungssystem problemlos möglich ist.

Das Deployment erzeugt automatisch ein Deploymentscript durch die Analyse der Zieldatenbank und einem Vergleich mit dem Projekt. Für Aufgaben, die beim Deployment nicht automatische gelöst werden können, steht ein Pre- und ein Postdeploymentscript zur Verfügung.

War das Alles?

Die DB-Projekte halten noch weitere Unterstützungen bereit, die im Folgenden nur aufgelistete und kurz beschrieben werden. Manche der Features sind so mächtig, dass es später einen eigenen Artikel dazu geben wird.

  • IntelliSense, Syntax highlighting, prüfen von Objektreferenzen (auch zu externen Referenzen)
  • Unterstützung CLR Entwicklung und Deployment
  • Unterstützung der Modularisierung der DB in mehrere Projekte
  • Unterstützung von Nuget-Pakten für Standardaufgaben
  • Unterstützung von Referenzen auf andere DBs
  • Automatisches Erstellen von DB-Testprojekten (ich bevorzuge SPEC-Flow zum Testen der DBs)
  • automatisches Deployment mittels Pipeline

Was ist Deployment und was Administration?

DB-Projekte können natürlich auch Indizes verwalten. Darüber hinaus ist auch die Verwaltung von Usern, Rollen vielem anderen möglich. Es ist deshalb wichtig die Grenze zwischen Entwicklung und Administration zu definieren. Hieraus ergibt sich, welche Objekte im DB-Projekt verwaltet werden. Es ist aber auch zwingend notwendig, die .publish.xml zu definieren, denn diese steuert das Deployment und könnte die Arbeit der Admins zu nichte machen.

Fazit

DB-Projekte sind eine gute Grundlage für CI/CD inkl. automatischer Tests und automatischem Deployment. Sie eignen sich auch für die paralle Entwicklung in mehren Branches.

Haben Sie Fragen, benötigen Sie Beratung oder Hilfe? Wenden Sie sich einfach an uns!