Datenebenenanwendungen mit SQL Server 2008 R2 und Visual Studio 2010

Datenbanken auf Vordermann bringen
Kommentare

Software, die auf einer eigenen Datenbank basiert, hat bei der Bereitstellung (Deployment, Installation) und bei Updates oftmals das Problem, dass auch diese Datenbank installiert bzw. aktualisiert werden muss. Dazu kommt, dass es gerade in größeren Unternehmen üblich ist, dass solche Änderungen an der Datenbank nur durch das entsprechende Supportteam durchgeführt werden darf und auf keinen Fall durch die Entwickler selbst. Was also tun? T-SQL-Skripte erstellen, die mehr oder weniger flexibel und robust gegenüber Fehlern sind, und diese dann ausführen lassen? Mitnichten! Mit SQL Server 2008 R2 und Visual Studio 2010 gibt es nun eine solidere Lösung: Datenebenenanwendungen.

Hinter diesem etwas sperrigen Begriff (im Englischen „Data Tier Application“) verbirgt sich eine recht pfiffige, wenn auch nicht ganz neue Idee: In einem speziellen Visual-Studio-Projekt wird festgelegt, welche Objekte in einer Datenbank benötigt werden (Tabellen, Sichten, Prozeduren, Schemata, Anmeldungen, Service Broker etc.), wie diese genau definiert sind und welche Einstellungen in der Datenbank-/SQL-Server-Instanz getroffen werden müssen, damit eine Anwendung korrekt funktionieren kann. Das schließt unter Umständen auch die komplette Erstellung der Datenbank mit ein, wobei allerdings berücksichtigt ist, dass der Speicherpfad der Medien bei der Bereitstellung auf dem SQL Server einfach bestimmt werden kann. All diese Informationen werden zusammen in ein Paket (einer einzelnen Datei) verpackt und können so einfach ausgeliefert oder übergeben werden.

Auf dem SQL Server selbst oder von dort aus, wo dessen Clienttools installiert sind (wichtig ist hier das SQL Server Management Studio), kann aus dem Paket die gesamte Datenbank in einem assistentengestützten Prozess bereitgestellt werden. Dabei wird kein festes Skript ausgeführt, sondern es wird verglichen, was im Paket definiert ist und was möglicherweise schon vorgefunden wird. Wird bei einer Tabelle z. B. eine Spalte hinzugefügt oder ein Datentyp geändert, so wird geprüft, ob das nicht bereits geschehen ist. Erst dann wird festgelegt, welche Änderungen notwendig sind, damit der Sollzustand erreicht wird. Auf diese Weise sind auch Szenarien abgedeckt, in denen für die Datenbank z. B. ein Update ausgelassen wurde oder die Bereitstellung mehrfach ausgeführt wird.

Ein Paket wird gepackt

Das Paket, in dem sich alle notwendigen Informationen der Datenbank befinden, ist eine Datei mit der Erweiterung dacpac. Generell kann das über das SQL Server Management direkt erstellt werden (Kontextmenü einer DB TASK | DATENEBENENANWENDUNG EXTRAHIEREN…). Sinnvoller ist es jedoch, wie in Abbildung 1 gezeigt, ein entsprechendes Projekt in Visual Studio 2010 zu eröffnen und das zusammen mit dem Code der Anwendung in der Quellcodeverwaltung (TFS etc.) zu halten.

Abb. 1: Ein neues SQL-Server-Datenebenenanwendung-Projekt erstellen
Abb. 1: Ein neues SQL-Server-Datenebenenanwendung-Projekt erstellen

Das so erstellte Projekt bietet im Projekt-Explorer eine wohl geordnete Struktur für alle möglichen Objekte, die berücksichtigt werden können. Das schließt auch eigene Skripte ein, die dann vor oder nach dem Deployment ausgeführt werden (Abb. 2).

Abb. 2: Eine Datenebenenanwendung in Visual Studio 2010
Abb. 2: Eine Datenebenenanwendung in Visual Studio 2010

Da es jedoch eher seltener vorkommt, dass mit einer komplett neuen und leeren Datenbank begonnen wird, gibt es die Möglichkeit, über das Kontextmenü des Projekts durch den Befehl DATENEBENENANWENDUNG IMPORTIEREN eine bestehende Datenbank mithilfe eines Assistenten zu importieren, sodass deren Objekte verwendet werden. Wird ein Objekttyp nicht unterstützt, so wird das in einer Zusammenfassung zum Ausdruck gebracht (Abb. 3).

Abb. 3: Bestehende Datenbanken können importiert werden
Abb. 3: Bestehende Datenbanken können importiert werden

Ein anderer Weg ist es, ein bereits bestehendes SQL-Skript zu importieren. Diese müssen als Datei vorliegen und die DDL-Anweisungen (also CREATE-Anweisungen) für die gewünschten Objekte beinhalten. Diese DDL-Anweisungen beschreiben dann das gewünschte Objekt (also quasi den Soll-Zustand), mit dessen Hilfe bei der Bereitstellung auf dem SQL Server entschieden wird, ob und was am Ist-Zustand verändert werden muss.

Ein Blick in das Paket

Aber was ist nun genau in dem Paket? Gemeint ist damit nicht der Aufbau der fertigen dacpac-Datei, schließlich ist das nur eine ZIP-Datei (mit Struktur und Metadaten) mit anderer Erweiterung, die alle notwendigen Metadaten beinhaltet. Nein, die Frage ist, was kann nun konfiguriert und berücksichtigt werden, sodass es später auf dem SQL Server so vorhanden ist, wie es gewünscht wird. Zunächst können Einstellungen für die Datenbank selbst und Anforderungen an die betreibende SQL-Server-Instanz festgelegt werden. Die Anforderungen erstrecken sich über die Betriebssystemversion, die SQL Server Edition, Sprache, Sortierreihenfolge (Collation) etc. Alle Anforderungen müssen erfüllt sein, damit das Paket ausgeliefert werden kann. So sind Überraschungen ausgeschlossen, wenn z. B. ein Feature wie Auditing, das nur auf den großen SQL-Server-2008-Editionen läuft, auf der kleinen Expressversion plötzlich nicht verfügbar ist (Abb. 4).

Abb. 4: Die Anforderungen an die SQL-Server-Instanz und den Server, auf dem sie betrieben wird
Abb. 4: Die Anforderungen an die SQL-Server-Instanz und den Server, auf dem sie betrieben wird

Wer für seine Anwendung also ungewöhnliche Anforderungen an die SQL-Server-Instanz hat, z. B. Unterscheidung zwischen Groß- und Kleinschreibung der Bezeichner bei Abfragen, kann damit sichergehen, dass diese auch wirklich gesetzt sind. Die Anforderungen sind technisch als SQL Facets realisiert, die die Bedingungen im Einzelnen beschreiben. Einstellungen für die Datenbank werden überprüft und bei der Zieldatenbank entsprechend gesetzt, wenn das notwendig ist (Abb. 5).

Abb. 5: Einstellungen, die für die Datenbank getroffen werden sollen
Abb. 5: Einstellungen, die für die Datenbank getroffen werden sollen
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -