Visual Studio Database Edition: Überblick

24. Januar 2011

Heute möchte ich ein Produkt von Microsoft vorstellen das leider weitgehend unbekannt ist. Die Rede ist von der Visual Studio Database Edition (aka „Data Dude“).

Wirklich neu ist die Database Edition allerdings nicht mehr. Schon seit 2005 ist sie als Teil der Team Suite verfügbar, was evtl. aber auch der Grund für die geringe Verbreitung sein könnte. Seit Version 2010 ist sie glücklicherweise bereits in der Professional Edition enthalten und sollte somit für die meisten Entwickler verfügbar sein.

Aufgabe der Database Edition ist es bei typischen Problemen der Datenbankentwicklung zu unterstützen:

  • Wie kann ich meine Datenbank einfach Versionieren? Im Gegensatz zu Code werden Datenbanken oft nicht in der Sourcenverwaltung verwaltet. Änderungen werden zumeist direkt auf einer Entwicklungsdatenbank vorgenommen. Es ist schwierig herauszubekommen was genau sich seit der letzten Version geändert hat.
  • Gibt es Unterschiede zwischen meinem Projekt und der Testdatenbank? Die Database Edition enthält Tools mit denen Unterschiede zwischen Projekt und Datenbank oder auch zwischen verschiedenen Datenbanken untersucht werden können. Dies beschränkt sich nicht nur auf die Struktur sondern es ist auch möglich die Unterschiede in den Daten zu vergleichen!
  • Wie deploye ich die neuste Version der Datenbank? Auch hier gibt es Tools die mir ermöglichen für die aktuelle Version Datenbank mit wenig Aufwand passende Alter Skripte zu erzeugen.
  • Wo bekomme ich valide Testdaten für meine Datenbank her? Jeder von uns kennt das Problem. Mit der Database Edition ist es recht einfach möglich, automatisiert Testdaten generieren zu lassen. Diese können auch bei einem Deployment der Datenbank gleich miterzeugt werden, z.B. für automatisierte Tests.
  • Wie kann ich meine Datenbank testen? Ja, es ist tatsächlich möglich Unit Tests für Datenbankobjekte zu schreiben!

In diesem Artikel möchte ich kurz auf die Grundlage der Database Edition eingehen: den Projekttyp des Datenbankprojektes. In nachfolgenden Artikel wird dann jeweils ein spezielles Feature näher beleuchtet.

Kern der Database Edition ist das so genannte Datenbankprojekt. In diesem werden Metainformationen aller SQL Server Objekte in Form von SQL-Skripten verwaltet. Es enthält alle Elemente der Datenbank wie Tabelle, Views, Stored Procedures, Indices, FK, Rollen, Schemas, aber auch Filegroups, Partitions und Collations. Nicht enthalten sind hingegen sind Objekte auf System Ebene wie z.B. Logins.

Alle Objekte werden dabei auf atomarer Ebene als Create oder Update .sql Script gespeichert. Atomar bedeutet, dass z.B. Schlüssel und Indizes unabhängig von der Tabelle gespeichert werden.

Das DB Projekt ist sich hierbei jederzeit über alle Abhängigkeiten zwischen den Objekten bewusst was z.B. Refactoring ermöglicht.

Die so erzeugten Skripte bilden den Source Code der Datenbank und können im Sourcenverwaltungsystem versioniert werden. Sourcecode und Datenbankcode befinden sich damit in der gleichen Solution. Dies bedeutet auch, dass zum Code auch immer die passende Datenbank vorhanden ist.

Nun aber mal ein Beispiel. Zunächst einmal erstellen wir ein neues Datenbankprojekt: File/Open/New Project/Database Project.

Hier wählen wir den SQL-Server Wizard.

Dann folgen wir dem Wizard mit Standardoptionen und wählen die gewünschte Datenbank aus:

Dann Start

Und schon haben wir den “SourceCode” unserer Datenbank als Offline Version. Unser Datenbankprojekt sieht nun so aus:

Die so erzeugten Files können nun in der Sourcenverwaltung eingecheckt und zusammen mit dem Code in einer Solution verwaltet werden.

Im nächsten Teil erkläre ich wie man ganz einfach Änderungen zwischen Projekt und Datenbank erkennt und diese entweder in das Projekt übernimmt oder in der Datenbank ändert.