MSDN Magazin > Home > Ausgaben > 2007 > February >  Daten als Teamergänzung: Visual Studio...
Daten als Teamergänzung
Visual Studio 2005 Team Edition for Database Professionals – eine Einführung
Brian A. Randell

Themen in diesem Artikel:
  • Quellcodeverwaltung und Änderungsmanagement für Datenbanken
  • Arbeiten mit neuen und vorhandenen Datenbanken
  • Komponententest von gespeicherten Prozeduren, Funktionen und Trigger
  • Datenbankvergleich
In diesem Artikel werden folgende Technologien verwendet:
Visual Studio 2005 Team System
Die Datenbankentwicklung ist dank Visual Studio® 2005 Team Edition for Database Professionals (oder kurz DB Pro Edition) einfacher geworden. Wenn Sie Lösungen erstellen oder verwalten müssen, die mit einem SQL Server™ verbunden sind, dann ist dieses Tool für Sie richtig.
DB Pro Edition stellt eine Vielzahl an Features bereit, um die Verwaltung von Datenbanken zu erleichtern. Als Teil der Visual Studio 2005 Team Suite arbeitet DB Pro Edition mit dem Feature Quellcodeverwaltung vom Team Foundation Server zusammen, damit Sie Datenbankänderungen genau wie Quellcode verwalten können. DB Pro Edition unterstützt Sandbox-Entwicklung von Datenbanken und enthält Tools für Datenbankvergleiche, Datenerstellung, Komponententests und die Bereitstellung von Datenbanken. Aber das Wichtigste an DB Pro Edition ist die gleichzeitige Verwendung aller Features als Teil eines ganzheitlichen Datenbankentwicklungszyklus.
Bevor wir uns in den Artikel stürzen, sollten wir ein paar Dinge klar stellen. Zum Ersten unterstützt die erste Version von DB Pro Edition die relationalen Datenbanken von SQL Server 2000 und SQL Server 2005, aber keine Analysedienste. Die Unterstützung für andere Microsoft und nicht-Microsoft Datenbanken ist für zukünftige Versionen über ein anbieterbasiertes Modell geplant, ist aber zum Zeitpunkt dieses Artikels nicht verfügbar. Zum Zweiten erweitert DB Pro Edition in Verbindung mit Team Foundation Server viele der DB Pro Edition-Features, aber der Team Foundation Server ist keine Voraussetzung für den Einsatz von DB Pro Edition.

Verwalten von Datenbankversionen
Um eine erfolgreiche Datenbank-orientierte Anwendung zu erstellen, müssen Sie unbedingt wissen, welche Kopie der Datenbank die „echte“ Version ist. Die Durchführung von Änderungen und das Testen für ein laufendes System steckt allerdings voller Gefahren. Normalerweise hat lediglich der Datenbankadministrator (DBA) die Befugnis hierzu. DB Pro Edition bietet eine Lösung an. Die Produktionsdatenbank enthält die aktuelle Version der Daten. DB Pro Edition enthält dagegen ein aktuelles Datenbankschema in einem projektbasierten System, das im Idealfall einer Versionskontrolle unterliegen sollte. DB Pro Edition verwaltet jedes Datenbankobjekt als einen Satz von .sql-Dateien, einschließlich aller Abhängigkeiten und Beziehungen zwischen diesen Objekten.
Aus der Sicht des Änderungsmanagements ist diese Trennung von Daten und Schema eine tolle Sache. Sie ermöglicht einen echten iterativen Entwicklungsprozess für Datenbank-gestützte Projekte.
Als Teil der Team System-Produktfamilie arbeitet DB Pro Edition mit Team Foundation Server und anderen Produkten aus Team System zusammen. Hierdurch ergibt sich echte Entwicklung im Team sowie eine ideale Verwaltung Ihres Datenbankschemas. Das dominierende Feature dürfte wohl die Versionskontrolle sein. Zusätzliche Features, wie z. B. das Verfolgen von Arbeitsaufgaben, Richtlinien zum Einchecken und Integration von Nightly Builds machen die Datenbank zu einem durchdachten Produkt, das kontrolliert und verwaltet werden kann. Sie muss daher nicht länger als separate Einheit mit eigenen und möglicherweise teuren Verwaltungs- und Entwicklungsprozessen behandelt werden.

Erste Schritte
DB Pro Edition ist im Kern ein Satz von Projektvorlagen und Tools, die sich in Visual Studio 2005 befinden. Sie können einige von den Tools verwenden, ohne ein Projekt zu erzeugen, aber die wirkliche Stärke der Software zeigt sich erst bei einem DB Pro Edition-Projekt.
Sie benötigen mindestens zwei Installationen von SQL Server: Eine dient als produktives System, die andere als Entwicklungssystem. Je nach Komplexität der Datenbank und der darüber liegenden Software können Sie zusätzliche Installationen auswählen. Für eine Teamumgebung sollten Sie über eine lokale private Instanz für jeden Datenbankexperten verfügen. Sie sollten zusätzlich wenigstens eine freigegebene Entwicklerinstanz für Integration und Regressionstests haben. (Ihre DB Pro Edition-Lizenz enthält übrigens auch eine Lizenz für SQL Server 2005 Developer Edition, die alle Features der Enterprise Edition enthält.)
Die ersten Schritte auf Ihrem lokalen Entwicklerrechner erfordern, dass Sie DB Pro Edition zusammen mit einer lokalen Kopie von SQL Server 2005 Developer Edition, Enterprise Edition oder sogar Express Edition installiert haben. DB Pro Edition verwendet eine SQL Server 2005-Instanz für die Überprüfung von SQL Server 2000- und SQL Server 2005-Projekten während der Entwurfszeit. Um die Instanz des für die Überprüfung verwendeten SQL Servers zu kontrollieren, gehen Sie unter Visual Studio 2005 auf die Option Tools | Optionen | Datenbanktools | Datenbank für die Entwurfszeitprüfung Wenn Sie mit Team Foundation Server arbeiten, sollten Sie auch Team Explorer installieren.
Während Ihnen DB Pro Edition die Erstellung einer Datenbank von Grund auf ermöglicht, müssen Sie wahrscheinlich auch vorhandene Datenbanken verwalten. Das Datenbankschema kann auf zweierlei Weise in ein Projekt geladen werden. Die erste ist durch Import einer SQL-Skriptdatei. Dies ist nützlich, wenn Sie z. B. Schemaänderungen durch das Speichern von Kopien des Schemas in der Versionskontrolle verwalten wollen, oder wenn Sie keine direkte Verbindung zur aktuellen Version des Schemas herstellen können und aufgrund von Sicherheits- oder anderer Unternehmensanforderungen einen direkten Import vornehmen.
Weiterhin kann das Schema durch Verbindung zu einer laufenden SQL Serverinstanz und anschließenden direkten Import geladen werden. Diese Option bietet sich an, wenn bereits ein neues Projekt erstellt wurde bzw. als Teil der Projekterstellung über den Assistenten für neue Projekte. Wenn Sie in einer Umgebung arbeiten, in der es einen Datenbankadministrator (DBA) gibt, bietet diese zweite Option eine gute Möglichkeit zur Integration des DBA in den Entwicklungsprozess. Wenn Sie idealerweise mit DB Pro Edition und einer vorhandenen Datenbank starten, sollte der DBA das Projekt erstellen, es in die Quellcodeverwaltung laden und es dann zur Entwicklung weiterreichen. Der DBA sollte aber während des gesamten Entwicklungszyklus präsent bleiben.
Es gibt einen wichtigen Unterschied zwischen dem Import über ein Skript und dem Import über eine laufende Datenbank. Sie können nur einmal von einer laufenden Datenbank importieren, während der Import über Skripts beliebig oft möglich ist.

Der Importprozess
Öffnen Sie zum Starten des Importprozesses das Dialogfeld „Neues Projekt“ in DB Pro Edition. Vom obersten Knoten, genannt Datenbankprojekte (nach einigen Knotenexpansionen), sind die Vorlagen für SQL Server verfügbar. Sie können entweder ein leeres Projekt oder einen Assistenten verwenden.
Mit dem Assistenten werden die ersten Schritte einfach gemacht. Die Fragen des Assistenten sind in Seiten mit den Titeln „Projekteigenschaften“, „Datenbankoptionen festlegen“, „Datenbankschema importieren“ und „Build/Bereitstellung konfigurieren“ aufgegliedert.
In den Projekteigenschaften können Sie angeben, wie Ihr Projekt auf dem Datenträger organisiert werden soll - entweder als Objekttyp oder als Schema. Überlegen Sie sich dies gut, weil sich diese Option nach Erstellung des Projekts und Import des Schemas nicht mehr gut ändern lässt. Eine schemabasierte Organisation kann nützlich sein, wenn Sie z. B. den Zugriff auf Teile der Datenbank aus Sicherheitsgründen einschränken müssen.
Sie verwenden die Seite „Datenbankoptionen festlegen“, um Datenbankeinstellungen, wie z. B. ANSI-Nullen, Anfrage-IDs und weitere festzulegen. Auf der Seite „Datenbankschema importieren“ wählen Sie aus, ob ein Datenbankschema von einem laufenden Server importiert werden soll. Wenn Sie jetzt importieren auswählen, müssen Sie angeben, ob die Datenbank- oder die Projektoptionen verwendet werden sollen.
Auf der Seite „Build/Bereitstellung konfigurieren“ können Sie schließlich die Optionen für die Platzierung der Buildskripts, die standardmäßige Zieldatenbankverbindung usw. einstellen. Wie die meisten vom Assistenten festgelegten Optionen sind auch diese über die Projekteigenschaften einstellbar.
Wenn Sie den Assistenten abgeschlossen und das Schema der Produktionsdatenbank importiert haben, ist der Offline-Arbeitsbereich erfolgreich erstellt. Jetzt können Sie sicher offline am Datenbankschema arbeiten.
DB Pro Edition stellt zwei Ansichten des Projekts bereit. Es gibt eine reine Dateiansicht, die über den Solution Explorer geöffnet wird (siehe Abbildung 1) und eine hierarchische Schemaansicht (nach Objekttyp oder nach Schema und dann nach Objekttyp organisiert), die sich über das Fenster „Schemaansicht“ anzeigen lässt. Diese beiden Ansichten bieten Flexibilität in Projektorganisation und Verwaltung. Sie können die Dateistruktur auf dem Datenträger mithilfe der Drag & Drop-Funktionalität im Solution Explorer vollständig umstellen und trotzdem leichten Zugriff auf Objekte über den Objekt- bzw. Schematyp beibehalten.
Abbildung 1 Die Datenbank im Solution Explorer (Klicken Sie zum Vergrößern auf das Bild)
DB Pro Edition zerlegt das Datenbankschema in kleine Objekte, die im Solution Explorer als .sql-Dateien und daher im Dateisystem dargestellt werden (nicht nur Objekte auf oberster Ebene, wie Tabellen, Ansichten und gespeicherte Prozeduren, sondern auch Indizes, Einschränkungen und ähnliches). Das Projekt erhält zusätzlich einen Satz von Skripts, die auf einem Ordnersatz mit den Namen „Pre-Deployment“ und „Post-Deployment“ verteilt werden. Sie können diese Skripts verwenden, um T-SQL-Vorgänge zu behandeln, die keine Schemaobjekte darstellen. Zusätzlich können Sie Ihre eigenen Verwaltungs- und Dienstprogrammskripts erstellen und nach Wunsch organisieren.
Wenn an dieser Stelle Team Foundation Server zur Verfügung steht, fügen Sie das Projekt zur Quellcodeverwaltung hinzu und haken die Arbeitsaufgaben ab. Microsoft aktualisiert den Leitfaden, der mit Team Foundation Server bereitgestellt wird, um Rollen und Arbeitsabläufe einzubinden, die speziell die Datenbankentwicklung für MSF sowie Vorlagen für MSF CMMI betreffen.

Bearbeiten von Schema und Objekten
Änderungen an einem vorhandenen Objekt einer Datenbank unter Quellcodeverwaltung sind nicht besonders kompliziert. Öffnen Sie einfach das Objekt, bearbeiten Sie es und speichern Sie die Änderungen (beim Bearbeiten wird das Objekt standardmäßig überprüft). Anschließend können Sie die Änderungen einchecken und sich dem nächsten Objekt zuwenden. Alternativ könnten Sie vor dem Einchecken das Ablege-Feature verwenden, um die Änderungen über den Server zur Prüfung durch ein anderes Teammitglied weiterzugeben, z. B. den DBA.
Der Offline-Arbeitsbereich fördert die Teamzusammenarbeit. Außerdem sind Änderungen am Datenbankschema mit weniger Risiko behaftet, da ein Rollback möglich ist. Zusätzlich kann das Team durch die Richtlinien zum Einchecken des Team Foundation Server Arbeitsabläufe kontrollieren und sicherstellen, dass z. B. alle Änderungen einem Arbeitselement zugeordnet wurden und alle Eintragungen Kommentare besitzen und so weiter.
Der Offline-Arbeitsbereich bietet eine gute Möglichkeit zur Verwaltung des Datenbankschemas. Er stellt jedoch keine Laufzeitumgebung bereit, um konkret Objekte zu erstellen, Abfragen auszuführen oder Daten zu ändern. Diese Arbeiten werden auf einer laufenden Instanz des SQL Servers verrichtet – der Sandbox. Der nächste Schritt nach dem Import des Produktionsschemas ist die Veröffentlichung des Schemas auf der lokalen Entwicklerinstanz des SQL Servers. Dies erfordert zwei einfache Schritte. Als Erstes geben Sie die Zielverbindung und den neuen Datenbanknamen auf der Registerkarte „Erstellen“ des Projektdesigners an. Diese Option kann bei Erstellung des Datenbankprojekts ggf. über den Importassistenten festgelegt werden. Anschließend klicken Sie im Solution Explorer mit der rechten Maustaste auf das Datenbankprojekt und wählen die Option „Bereitstellen“ aus. Danach können Sie mit der Arbeit an der Datenbank anfangen.
Beim Entwurf von Datenbankobjekten fügen Sie ein neues Element aus einem von drei Orten hinzu: aus dem Menü „Projekt“, aus dem Kontextmenü im Solution Explorer oder aus dem Kontextmenü in der Schemaansicht. (Ein Feature, das diese erste Version nicht bietet, sind interaktive Entwurfstools). Sie erstellen alle Datenbankobjekte durch Eingabe der entsprechenden T-SQL Anweisungen. Zum Erstellen einer neuen Tabelle wählen Sie beispielsweise den Befehl „Element hinzufügen“ im Menü „Projekt“ aus. Hierdurch wird das Dialogfeld „Neues Element hinzufügen“ geöffnet. Dann wählen Sie die Option „Tabellen und Ansichten“ aus dem Kategoriebereich, gefolgt vom Tabellenelement im Vorlagenbereich. Schließlich geben Sie einen Namen für die neue Tabelle ein. Wenn Sie eine Datenbank von einem laufenden Server importieren, sind die verwendeten Namen der .sql-Dateien auf dem Datenträger im Format objectname.objecttype.sql. Dies sollten Sie beim Ausarbeiten von Standards für Dateinamen in Datenbankprojekten beachten. Allerdings ist der Name, den Sie für die Datei auswählen, orthogonal zum in der Datenbank verwendeten Objektnamen. Wenn Sie einen Namen festgelegt und das Dialogfeld „Neues Element hinzufügen“ geschlossen haben, öffnet sich ein T-SQL-Editorfenster und stellt eine einfache Vorlage bereit.
Der T-SQL-Editor in DB Pro Edition besteht aus einem vollständigen Editor mit einem Ausführungsfenster. Er unterstützt farbkodiertes Bearbeiten, Syntaxprüfung, Clientausführungsstatistiken und vielfältige Ergebnisformate. Diese erste Version unterstützt jedoch nicht IntelliSense®. Während Sie die Tabelle erstellen, können Sie die Syntax durch Drücken von Strg+F5 überprüfen. Beim ersten Mal fordert DB Pro Edition Sie auf, eine Verbindung herzustellen.
Wenn Sie im T-SQL-Editor an den Anweisungen der Datendefinitionssprache (Data Definition Language, DDL) arbeiten, gehen Sie mit der Funktion „F5“ vorsichtig um. Ein Druck auf „F5“ führt T-SQL und alle aufgeführten Befehle für die zur Syntaxprüfung ausgewählte Datenbank aus. Den fertigen Tabellenentwurf können Sie der Quellcodeverwaltung übergeben oder für eine Überprüfung ablegen.
Wenn Sie in T-SQL arbeiten, sind die in DB Pro Edition definierten Objekte nur grob umrissen. Indizes, Einschränkungen und weiteres muss individuell erstellt werden. Je nachdem, wie Sie Datenbankobjekte bisher erstellt haben, mag dies eine ziemliche Umstellung sein. Angenommen, Sie wollen zur Northwind-Beispieldatenbank Auktionssupport hinzufügen. Die Erstellung einer Auktionstabelle mit einer Identitätsspalte für den Primärschlüssel erfordert zunächst die Erstellung der Auktionstabelle und anschließend die Einschränkung des Primärschlüssels. Das Hinzufügen einer Fremdschlüsseleinschränkung ist ebenfalls ein gesonderter Schritt mit einer eigenen .sql-Datei.
Einerseits werden Sie neue Objekte zu einer Datenbank hinzufügen, andererseits Änderungen an vorhandenen Objekten durchführen. Manche Änderungen sind relativ einfach, wie das Hinzufügen zusätzlicher Fehlerbehandlung zu einer gespeicherten Prozedur. Andere Änderungen sind eher wie ein Neuentwurf und sehen nach einer völligen Umgestaltung aus. Ein in DB Pro Edition bereitgestelltes Umgestaltungstool behandelt die Änderung von Objektnamen, die bei der Umgestaltung von Datenbanken oft problematisch sind.
Um ein Objekt umzubenennen, müssen Sie es zuerst mithilfe des Schemaansichtfensters finden. Danach klicken Sie mit der rechten Maustaste auf das Objekt und wählen Refactor | Umbenennen aus. Im nachfolgend angezeigten ersten Dialogfeld (siehe Abbildung 2) geben Sie den neuen Namen ein und geben an, ob Sie Änderungen als Vorschau ansehen oder ein Protokoll erstellen möchten und wie Sie unqualifizierte Skripts und Komponententestreferenzen behandeln möchten. Nach Klicken auf „OK“ erscheint das Dialogfeld „Änderungen als Vorschau anzeigen“ (siehe Abbildung 3), wenn Sie die Standardoptionen akzeptieren.
Abbildung 2 Das Dialogfeld „Umbenennen“ (Klicken Sie zum Vergrößern auf das Bild)
Abbildung 3 Das Dialogfeld „Änderungen als Vorschau anzeigen“ (Klicken Sie zum Vergrößern auf das Bild)
Eine Strukturansicht zeigt jedes Element an, das aktualisiert werden muss. DB Pro Edition sucht nicht nur nach Änderungen innerhalb Ihres Datenbankprojekts, sondern untersucht auch die Datenbankkomponenten-Tests, die Datenerstellungsdateien und zusätzliche unterstützende .sql-Dateien.
Durch Erweiterung eines Elements werden alle Änderungen angezeigt, durch Klicken auf ein Element wird das neue T-SQL angezeigt, und durch Klicken auf eine bestimmte Änderung wird der neue Objektname markiert. Wenn Sie mit den Änderungen zufrieden sind, klicken Sie auf die Schaltfläche „Anwenden“. Vergessen Sie nicht, dass die Änderungen nur auf Ihre lokale Kopie im Arbeitsbereich des Schemas angewendet werden. Wenn Sie Quellcodeverwaltung verwenden, müssen Sie die Änderungen übernehmen. Außerdem müssen Sie ein Updateskript bereitstellen, damit die Änderungen in einer vorhandenen Datenbank übernommen werden –- vorzugsweise in der Sandbox-Kopie.

Datenerstellung
Es gibt ein uraltes Problem, wenn es um Datenbankanwendungen geht. Der Datenbedarf besteht, aber Sicherheit und gesetzliche Einschränkungen verhindern oft, dass Sie mit Kopien von Produktivdaten arbeiten können. Neue Tabellen sind ohne Daten sowieso ziemlich uninteressant, genau wie Objekte, die mit diesen Tabellen arbeiten, wie z. B. gespeicherte Prozeduren.
DB Pro Edition stellt umfassende Datenerstellungstools bereit, um gestressten Entwicklern zu helfen. Ein Datenbankprojekt kann eine beliebige Anzahl von Datenerstellungsplänen enthalten. Jeder Plan unterstützt Datenerstellung für eine oder mehrere Tabellen im Schema. Wenn Sie eine Tabelle für die Datenerstellung aktivieren, legen Sie einen Datenerstellungsplan für jede Spalte fest. Sie können die eingebauten Erstellungstools verwenden oder eigene benutzerdefinierte Tools schreiben.
Durch die Datenerstellungstools können Sie über einen bestimmten Zeitraum wiederholbare Testdaten generieren, wobei angenommen wird, dass die Datenerstellungstools deterministisch sind. Dies führt zu konsistenten Basisdaten, anhand derer die gesamten Tests ausgeführt werden können.
Eine Anzahl verschiedener und sofort einsatzbereiter Standarderstellungstools steht zur Verfügung. Wenn Sie einen Datenerstellungsplan definieren, weist DB Pro Edition automatisch ein Standarderstellungstool zu, das auf dem Datentyp der Spalte basiert. Zusätzlich erkennt DB Pro Edition Spalten, die Einschränkungen enthalten, wie z. B. Spalten mit Fremdschlüsseln.
Sie können Wertersteller für die meisten eingebauten Datentypen verwenden (wie z. B. Zeichenfolgen, ganze Zahlen und GUIDs), um zufällige Daten für eine Spalte zu generieren. Jeder Wertersteller unterstützt eine Vielzahl von Eigenschaften, um die Erstellung zu kontrollieren. Sie können zum Beispiel für Zeichenfolgen-Datentypen, wie NVARCHAR, Eigenschaften wie Mindestlänge, maximale Länge und Nullprozentsatz festlegen. Wenn Ihre Anforderungen an die Spalten komplexer sind, können Sie den Ersteller für reguläre Ausdrücke verwenden, um Telefonnummern, Postleitzahlen und ähnliches zu erzeugen. Sie können den Datenersteller einsetzen, um vorhandene Daten aus Tabellen der Datenbank oder von einer anderen unterstützten Datenbank zu laden. Durch die Möglichkeit, benutzerdefinierte Ersteller mit verwaltetem Code zu erzeugen, dürfte die Generierung nützlicher Datenerstellungspläne keine Probleme bereiten.

Komponententest
Sie verwenden sicherlich Komponententests für Ihren Visual Basic®-oder Visual C#®-Code. Sehr wahrscheinlich verwenden Sie aber beim Testen gespeicherter Prozeduren, Funktionen und Trigger nicht die gleiche leistungsfähige Technik. DB Pro Edition bietet einen wiederholbaren, leichten und automatisierten Mechanismus für das Testen der oben erwähnten Objekte. Er umfasst Komponententests für Datenbanken, die Sie als Teil eines Team System-Testprojekts verwenden können. Die Komponententests sind T-SQL, die entweder Visual Basic- oder Visual C#-Klassendateien zugeordnet sind und somit eine fortgeschrittene Anpassung ermöglichen.
Verwenden Sie Komponententests in DB Pro Edition, um die Verbindung zwischen dem Datenbankschema und den Anwendungen zu überprüfen, die das Schema benutzen. Die ersten Schritte sind einfach – die Northwind-Beispieldatenbank besitzt eine Anzahl gespeicherter Prozeduren, mit denen Sie üben können.
Wenn Sie die Northwind-Datenbank bereits importiert haben, können Sie nun die gespeicherte Prozedur CustOrderHist über das Schemaansichtsfenster finden. Durch einen rechten Mausklick wird eine Option zur Erstellung von Komponententests angezeigt. Nach der Auswahl wird das Dialogfeld in Abbildung 4 angezeigt.
Das Dialogfeld ist in drei Gruppen unterteilt. Sie verwenden die aktuelle Auswahlgruppe, um die Elemente festzulegen, für die DB Pro Edition Komponententests generieren soll. Sie können eine beliebige Anzahl gespeicherter Prozeduren, Funktionen oder Trigger auswählen. (Hinweis: Das Dialogfeld in Abbildung 4 zeigt keine Funktionsknoten oder Trigger, weil die Northwind-Datenbank nur über gespeicherte Prozeduren verfügt.)
Abbildung 4 Das Dialogfeld „Komponententests erstellen“ (Klicken Sie zum Vergrößern auf das Bild)
In der Ausgabeprojektgruppe definieren Sie entweder, ob Sie ein neues Testprojekt erstellen oder einen neuen Komponententest zu einem vorhandenen Projekt hinzufügen wollen. Wenn Sie ein neues Projekt erstellen, wählen Sie die Standardprogrammiersprache (Visual Basic oder Visual C#) aus. Zum Schluss legen Sie einen neuen Klassennamen fest oder wählen eine vorhandene Klasse aus (unter der Voraussetzung, dass Sie ein vorhandenes Testprojekt ausgewählt haben).
Wenn Sie zum ersten Mal einen Komponententest für eine Datenbank starten und das Dialogfeld „Komponententests erstellen“ angezeigt wird, könnten Sie versucht sein, alles auszuwählen und auf „OK“ zu klicken. Dies ist keine gute Idee. Gehören wirklich alle Ihre zu testenden Objekte in dieselbe Klasse? Gehören sie wirklich alle in dasselbe Testprojekt? Genauso wie Sie nicht den gesamten Code in eine einzelne Klasse innerhalb einer einzelnen Klassenbibliothek stellen, möchten Sie wahrscheinlich nicht alle Tests in eine so beschränkte Konfiguration stellen. Die Tatsache, dass Ihre Datenbank Schemata verwenden kann, ist hier von großem Vorteil. Klicken Sie nicht unüberlegt auf „OK“.
Markieren Sie für dieses Beispiel die gespeicherten Prozeduren CustOrdersOrders und CustOrdersDetails. DB Pro Edition setzt automatisch ein Häkchen neben CustOrderHist. Jedes ausgewählte Programmobjekt besitzt ein automatisch generiertes Testskript, das Sie wahrscheinlich anpassen müssen. Wählen Sie eine Programmiersprache aus, ändern Sie den Namen des Projekts zu „NorthwindTests“, ändern Sie den Namen der Klasse zu „Customers“ und klicken Sie auf „OK“, um das Testprojekt und die Komponententests zu erstellen. (Hinweis: Die Auswahl einer Programmiersprache bedeutet nicht, dass Sie diese verwenden müssen, da alles mit T-SQL erledigt werden kann.) Nach Klicken auf „OK“ wird das Dialogfeld „Testprojekt konfigurieren“ angezeigt (siehe Abbildung 5). Legen Sie im ersten Bereich die Verbindungseinstellungen von oben nach unten fest.
Abbildung 5 Das Dialogfeld „Testprojekt konfigurieren“ (Klicken Sie zum Vergrößern auf das Bild)
Im ersten Eintrag können Sie die Verbindung zum laufenden Datenbankserver festlegen, die beim Ausführen der Komponententests verwendet werden soll. Im zweiten Eintrag können Sie die Verbindung angeben, die beim Überprüfen der Komponententests verwendet werden soll.
Denken Sie daran, zwei verschiedene Verbindungen zu verwenden. Legen Sie die erste Verbindung für die Durchführung mithilfe von Anmeldeinformationen eines typischen Benutzerkontos fest, über das das zu testende Objekt ausgeführt werden soll. Legen Sie die zweite Verbindung für die auszuführende Prüfung mithilfe von Anmeldeinformationen eines Benutzers mit erweiterten Berechtigungen fest. Wenn Sie zwei Verbindungen festlegen, führt das Test-Laufzeitmodul Pre-Test, Post-Test, Initialisierung und Bereinigungsverfahren mithilfe der Prüfungsverbindung aus – ansonsten wird die Durchführungsverbindung verwendet. Dies ist besonders nützlich, da viele Prüfoperationen, wie etwa das Bereinigen von Tabellen, erweiterte Berechtigungen erfordern.
Nach Festlegen der Verbindungen legen Sie im nächsten Abschnitt des Dialogfelds die Bereitstellungsoptionen fest. Sie können auswählen, ob vor der Ausführung des Komponententests ein neues oder ein aktualisiertes Datenbankschema bereitgestellt werden soll, indem Sie ein vorhandenes DB Pro Edition-Projekt angeben. Weiterhin legen Sie die zu verwendende Bereitstellungskonfiguration fest. Schließlich können Sie einen Datenerstellungsplan auswählen, der ausgeführt werden soll. Das Test-Laufzeitmodul führt den Datenerstellungsplan nach Bereitstellung der Datenbank (falls ausgewählt) durch, aber vor Ausführung der Tests.
Wenn Sie Datenerstellung ausgewählt haben, können Sie das Test-Laufzeitmodul anweisen, die Tabellen vor dem Laden neuer Daten zu leeren. Wählen Sie im Weiteren die gleiche Northwind-Verbindung wie für die Durchführungsverbindung des Datenbankprojekts aus, akzeptieren Sie die Standardvorgaben für die anderen Einstellungen, und klicken Sie auf „OK“. Die Testprojektgenerierung schließt mit dem Öffnen des Datenbankkomponententest-Designers ab. Der erstellte T-SQL-Code wird zu Ihrer Hilfe angezeigt (siehe Abbildung 6).
Abbildung 6 Test Designer (Klicken Sie zum Vergrößern auf das Bild)
Der Designer unterstützt einen T-SQL-Skripteditor und einen Klasseneditor für Visual Basic und Visual C#. Das Fenster ist in zwei Abschnitte unterteilt: Einen Editor und einen Bedingungsmanager.
Jede Komponententestklasse für Datenbanken kann eine oder mehrere Komponententests für Datenbanken enthalten und jeder Komponententest besteht aus bis zu drei Skripts. Dabei handelt es sich um einen Pre-Test, einen Test und einen Post-Test. Hier ist allerdings nur das Testskript erforderlich. Zusätzlich unterstützt jede Komponententestklasse für Datenbanken allgemeine Pre- und Post-Skripts. Ganz oben im Designer befindet sich eine Navigationsleiste zur Auswahl des aktiven Komponententests und des Testskripts.
Die Standardtestbedingung der von Ihnen erstellten Tests ist auf „nicht eindeutig“ gesetzt. Wenn Sie Testbedingungen mit dem unteren Teil des Designers verwalten, kann jeder Test mehr als eine Testbedingung haben. Das Fehlen jeglicher Testbedingungen führt dazu, dass der Test beim Ausführen automatisch bestanden ist. Aus diesem Grund stellt die standardmäßige Verwendung einer Testbedingung bei „nicht eindeutig“ sicher, dass Sie das automatisch generierte Skript bearbeiten und sinnvolle Testbedingungen definieren.
Im Fall des Beispiels dbo_CustOrderHistTest verändern Sie das automatisch generierte T-SQL, um eine Kunden-ID, wie z. B. ALFKI, bereitzustellen. Wählen Sie dann die Standardtestbedingung aus und löschen Sie sie durch Klicken auf die Schaltfläche „Löschen“ (rechts vom Kombinationsfeld „Testbedingung“). Wenn Sie das Kombinationsfeld „Testbedingung“ erweitern, sehen Sie eine Liste integrierter Testbedingungen, einschließlich Ausführungszeit, nichtleere Ergebnismenge und Zeilenanzahl. Zusätzlich können Sie eigene benutzerdefinierte Testbedingungen mithilfe von verwaltetem Code schreiben.
Für den Komponententest dbo_CustOrderHistTest fügen Sie die Bedingung „nichtleere Ergebnismenge“ hinzu. Fügen Sie auch die Testbedingung „Zeilenanzahl“ hinzu und ändern die Eigenschaft auf 11. Sie können Testbedingungen umbenennen und, falls nötig, aktivieren oder deaktivieren.
Wenn das Designerfenster aktiv ist, können Sie die Tests durch Drücken auf „F5“ ausführen. Hierdurch wird das Projekt gespeichert und kompiliert. Das Testmodul führt dann alle Komponententests aus. Abbildung 7 zeigt den Ausführungsablauf einer Komponententestklasse für Datenbanken.
Abbildung 7 Ausführen des Komponententests für Datenbanken (Klicken Sie zum Vergrößern auf das Bild)
Sie können über das Testansichtsfenster einen einzelnen Test ausführen oder einen bestimmten Komponententest auswählen, mit der rechten Maustaste darauf klicken und den Befehl „Auswahl ausführen“ auswählen. Zusätzlich können Sie die Tests debuggen. Wenn Sie DB Pro Edition zusammen mit Team Foundation Server verwenden, können Sie die Testergebnisse in Team Foundation Server veröffentlichen, sowie die Tests als Teil Ihrer Team-Builds laufen lassen. Wenn Sie außerdem eine Version von Visual Studio 2005 verwenden, die das Feature „Team Test“ enthält, können Sie eine beliebige Anzahl an Testlisten erstellen, um Tests in unterschiedliche Testsuiten für gültige Testtypen logisch zu gruppieren.

Datenbanken vergleichen
Nach der ganzen Arbeit an der Datenbank wird es Zeit, die Änderungen in das Testsystem zu verschieben. Mit DB Pro Edition können Sie das Schema Ihres Projekts mit jeder laufenden Datenbank vergleichen. Zusätzlich können Sie die in Tabellen und Ansichten enthaltenen Daten zweier Datenbanken mithilfe von Datenvergleichtools vergleichen. Sie können sowohl das Schema als auch das Datenvergleichstool bei geöffnetem oder nicht geöffnetem DB Pro Edition-Projekt ausführen.
Das Schemavergleichstool kann zum Vergleich von zwei Schemata verwendet und bei Bedarf ein DDL-Änderungsskript generiert werden. Das Skript lässt sich direkt aus DB Pro Edition heraus anwenden, oder es kann zur späteren Verwendung exportiert werden. Das Schemavergleichstool befindet sich unter Daten | Schemavergleich | Neuer Schemavergleich. Das daraufhin angezeigte Schemavergleichs-Dialogfeld ermöglicht die Angabe des Quell- und des Zielschemas. Sie können ein DB Pro Edition-Projekt mit einer Datenbank vergleichen oder eine Datenbank mit einer anderen vergleichen.
Nach Definition von Quelle und Ziel startet der Vergleichsvorgang. Das dreiteilige Schemavergleichsfenster öffnet sich und zeigt die Ergebnisse an. Der oberste Abschnitt enthält eine Liste aller Schemaobjekte, nach Typ sortiert. Der schreibgeschützte Abschnitt zur Objektdefinition in der Mitte zeigt zwei Textvergleichsfenster an, die das T-SQL für das derzeit ausgewählte Objekt enthalten. Das schreibgeschützte Schemaaktualisierungsskript-Fenster unten zeigt das vorgeschlagene Updateskript an.
Sie können die angezeigten Objekte daraufhin filtern, ob sie im Vergleich verschieden, fehlend, neu oder gleich waren. Bei der Untersuchung können Sie die Objekte entweder zum Schemaaktualisierungsskript hinzufügen oder entfernen, indem Sie die Aktualisierungseigenschaft eines Elements verändern. DB Pro Edition legt die Aktualisierungseigenschaft für gleiche Objekte auf „Auslassen“ fest. Alle anderen Objekte werden entweder auf „Erstellen“, „Aktualisieren“ oder „Weglassen“ gesetzt und können von der standardmäßigen Aktualisierungseigenschaft auf „Auslassen“ geändert werden. Sie können dann leicht herausfiltern, welche Objekte Sie verändern und welche Sie auslassen möchten. Während dieses Vorgangs aktualisiert DB Pro Edition das vorgeschlagene Skript in Echtzeit.
Wenn Sie mit dem Updateskript zufrieden sind, haben Sie mehrere Auswahlmöglichkeiten. Sie können mutig sein und die Änderungen in das Zielschema schreiben. Dies könnte in Ihrer Laborumgebung gut funktionieren, aber wahrscheinlich bei Ihrem DBA nicht. Stattdessen können Sie entweder das Updateskript in eine Datei oder in den eingebauten T-SQL-Editor der DB Pro Edition exportieren. Nach einer ausführlichen Überprüfung sind Sie schließlich zur Aktualisierung der Zieldatenbank bereit. Über Tools | Optionen | Datenbanktools | Schemavergleich haben Sie die Kontrolle darüber, wie Schemavergleiche durchgeführt werden sollen.
Um einen Datenvergleich durchzuführen, geben Sie zunächst die Quell- und Zieldatenbanken an. Tabellen und Ansichten müssen den gleichen Namen, den gleichen Besitzer und passende Schemata haben. Tabellen müssen den gleichen Schlüssel und das gleiche Indexlayout haben. Sie starten den Assistenten durch Auswählen des Menüeintrags Daten | Datenvergleich | Neuer Datenvergleich. Sie können verschiedene Optionen zum Datenvergleichsprozess einstellen, indem Sie zu Tools | Optionen | Datenbanktools | Datenvergleich wechseln. Wenn Sie den Datenvergleich abgeschlossen haben, können Sie das generierte Skript zur Verschiebung der Daten zwischen den Quell- und den Zieldatenbanken verwenden.

Build und Bereitstellung
Sie haben gesehen, dass Sie ein T-SQL-Updateskript manuell über das Schemavergleichstool erstellen können. DB Pro Edition kann jedoch als Teil des Build-Prozesses ein vollständiges Skript für das Bereitstellen Ihres Datenbankprojekts generieren. Über dieses Bereitstellungsskript kann sowohl ein vollständiges Build als auch ein inkrementelles Update durchgeführt werden. Im Build-Prozess können sogar alle Ihre Pre- und Post-Bereitstellungsskripts zu einem vollständigen Bereitstellungsskript zusammengefasst werden. Sie können das Skript über den Befehl Build | Bereitstellung direkt aus Visual Studio 2005 heraus bereitstellen.
Unter Projekteigenschaften finden Sie eine Vielzahl an Optionen, um den Build-Prozess zu verwalten und anzupassen. Die Build-Registerkarte enthält die wichtigsten Einstellungen, wie z. B. Verbindung zum Ziel, Name der Zieldatenbank und inkrementelle Bereitstellung blockieren, wenn ein Datenverlust droht. Außerdem gibt es eine Buildereignis-Registerkarte zur Eingabe von Pre- oder Post-Buildereignisbefehlen DB Pro Edition verwendet MSBuild für den Build-Prozess und unterstützt bei Einsatz von Team Foundation Server die Integration mit Team Build.

Schlussbemerkung
Wenn Sie professioneller Entwickler sind und mit SQL Server 2000 oder SQL Server 2005 arbeiten, werden Sie Visual Studio 2005 Team Edition for Database Professionals als unentbehrliches Tool für das Erstellen von Datenbank-gestützten Lösungen zu schätzen wissen. Das Produkt stellt eine Reihe für eine erste Version bemerkenswert umfassender Features bereit und bringt große Veränderungen bei der Verwaltung von Datenbanken in einer Entwicklungsumgebung.

Brian A. Randell ist Senior Consultant für MCW Technologies, LLC. Brian Randell hält Vorträge, unterrichtet und schreibt über Microsoft-Technologien. Er ist der Autor des Pluralsight-Kurses „Applied Team System“ und MVP für Microsoft. Sie erreichen Brian Randell über seinen Blog unter mcwtech.com/cs/blogs/brianr.

Page view tracker