Grundlegendes zu Datenebenenanwendungen

Eine Datenebenenanwendung (DAC) ist eine Entität, die alle von einer Anwendung verwendeten Datenbank- und Instanzobjekte enthält. Eine DAC stellt eine zentrale Einheit für die Erstellung, Bereitstellung und Verwaltung der Datenebenenobjekte dar, sodass diese nicht separat verwaltet werden müssen. Mithilfe einer DAC kann die Datenebenenentwicklung enger mit der Entwicklung des zugehörigen Anwendungscodes integriert werden. Darüber hinaus erhalten Administratoren auf Anwendungsebene einen Überblick über den Ressourceneinsatz in den beteiligten Systemen.

Arbeiten mit Datenebenenanwendungen

Beim Arbeiten mit einer DAC führen Sie die folgenden Schritte aus:

  • Sie erstellen zunächst einen DAC-Typ oder eine DAC-Definition, der bzw. die die von der zugeordneten Anwendung verwendeten Objekte angibt. Die DAC-Definition wird dann in ein DAC-Paket integriert. Dies ist die Datei, die zur Bereitstellung und Aktualisierung der DAC verwendet wird. Es gibt zwei Möglichkeiten, eine DAC-Definition und ein DAC-Paket zu erstellen:

    • Sie öffnen ein Datenebenenanwendungs-Projekt in Microsoft Visual Studio 2010 und geben die Objekte an, aus denen sich die DAC zusammensetzt. Wenn Sie das DAC-Projekt erstellen, kompiliert Visual Studio eine DAC-Definition und fügt sie in ein DAC-Paket ein.

    • Sie extrahieren eine DAC-Definition aus einer vorhandenen Datenbank und erstellen mit dem Assistenten zum Extrahieren von Datenebenenanwendungen ein DAC-Paket.

    Weitere Informationen finden Sie unter Implementieren von Datenebenenanwendungen.

  • Das DAC-Paket wird mithilfe des Assistenten zum Bereitstellen von Datenebenenanwendungen für eine Database Engine (Datenbankmodul)-Instanz bereitgestellt. Die Bereitstellung des DAC-Pakets wird normalerweise mit der Bereitstellung der ausführbaren Anwendungsdateien koordiniert. Bei der Bereitstellung wird eine Instanz der DAC erstellt, die aus zwei Hauptteilen besteht:

    • Die DAC-Definition wird in der msdb-Systemdatenbank (die Master-Datenbank in SQL Azure) gespeichert.

    • Eine Benutzerdatenbank wird erstellt und mit den in der DAC-Definition angegebenen Objekten aufgefüllt.

    Wenn es sich bei der Datenbankmodul-Instanz um eine im SQL Server-Hilfsprogramm verwaltete Instanz handelt, wird die DAC als bereitgestellte DAC auf den Hilfsprogramm-Kontrollpunkt hochgeladen.

    Weitere Informationen finden Sie unter Bereitstellen von Datenebenenanwendungen.

  • Anwendungen stellen eine Verbindung mit der Datenbank her, die der DAC zugeordnet ist. Administratoren können die Datenbank, die der DAC zugeordnet ist, mithilfe festgelegter Verfahren überwachen und verwalten. Sie sind jedoch auch in der Lage, zusätzliche Informationen aus der DAC selbst abzurufen:

    • Der Knoten Bereitgestellte Datenebenenanwendungen des Hilfsprogramm-Explorers von SQL Server Management Studio (SSMS) stellt einen anwendungszentrierten Bericht zum Ressourceneinsatz dar. Dieser ermöglicht es den Administratoren, den Zustand von Instanzen ihrer Datenebenenanwendungen schneller zu bewerten.

    • Unter dem Knoten Datenebenenanwendung des Objekt-Explorers von Management Studio werden Eigenschaften für jede DAC-Instanz angezeigt.

  • Eine DAC vereinfacht die Unterstützung von Upgrades zwischen verschiedenen Versionen einer Datenbank. Wenn Sie Datenbanken mithilfe von Transact-SQL-Skripts bereitstellen, müssen Datenbankentwickler zwei Sätze von Skripts für jede Version der Datenbank erstellen, nachdem die erste bereitgestellt wurde. Ein Satz von Skripts kann verwendet werden, um eine vorhandene Datenbank auf die neue Version zu aktualisieren, und mit dem anderen Satz kann eine neue Datenbank installiert werden. Bei der Verwendung von DACs muss der Datenbankentwickler nur ein DAC-Paket erstellen, in dem das von der neuen Version der Anwendung verwendete Schema beschrieben wird. Sie können das Paket mit dem Assistenten zum Bereitstellen von Datenebenenanwendungen verwenden, um eine neue Instanz der DAC zu installieren. Sie können das gleiche Paket mit dem Assistenten zum Aktualisieren von Datenebenenanwendungen verwenden, um eine vorhandene DAC-Instanz zu aktualisieren. Der Assistent zum Aktualisieren von Datenebenenanwendungen vergleicht die beiden Schemas und führt dynamisch die Aktionen aus, die erforderlich sind, um die vorhandene DAC-Instanz in die neue Version der DAC zu transformieren.

    Weitere Informationen finden Sie unter Aktualisieren von Datenebenenanwendungen.

  • Die DAC kann mithilfe des Assistenten zum Löschen von Datenebenenanwendungen aus der Database Engine (Datenbankmodul)-Instanz gelöscht werden.

Weitere Informationen zum Erstellen und Verwenden einer DAC finden Sie unter Lernprogramme für Datenebenenanwendungen.

Elemente von Datenebenenanwendungen

Eine DAC-Definition enthält die folgenden Elemente:

  • DAC-Eigenschaften, durch die Merkmale der DAC definiert werden. Jede DAC verfügt z. B. über eine Eigenschaft für den Anwendungsnamen und die Version. Die jeweiligen Werte beziehen sich in der Regel auf den Namen und die Versionsnummer der zugehörigen Anwendung.

  • Definitionen aller von der Anwendung verwendeten Datenbankobjekte, z. B. Schemas, Tabellen, Sichten und gespeicherte Prozeduren. Mithilfe von SQL Server 2008 R2 oder Visual Studio 2010 erstellte DACs unterstützen nicht alle verfügbaren SQL Server-Objekte. Weitere Informationen finden Sie unter DAC-Unterstützung für SQL Server-Objekte und -Versionen.

  • Definitionen der Objekte auf Instanzebene, z. B. Anmeldenamen, die den Datenbankobjekten zugeordnet sind und von der Anwendung verwendet werden.

  • Eine Richtlinie zur Serverauswahl, die die erforderlichen Bedingungen definiert, die eine Database Engine (Datenbankmodul)-Instanz zum Hosten der DAC erfüllen sollte. Die Richtlinie wird mit dem Facet zur Serverauswahl definiert und kann Bedingungen auswerten, z. B. die Edition und Standardsortierung der Instanz.

  • Dateien und Skripts, die bei der Erstellung in Visual Studio in die DAC-Definition eingebettet werden können. Beispiele sind Anwendungsdokumente, Pläne zur Datengenerierung, die das Verfahren zum Erstellen aussagekräftiger Testdaten festlegen, oder Skripts, die vor und nach der Bereitstellung ausgeführt werden.

Datenebenenanwendungs-Projekt

Eine DAC wird in der Regel in Visual Studio 2010 von einem Datenbankentwickler entwickelt, der zu diesem Zweck ein Datenebenenanwendungs-Projekt verwendet. Der Datenbankentwickler definiert die Datenebenenobjekte, die von der Anwendung benötigt werden, zu deren Unterstützung die DAC entwickelt wird. Sobald die DAC für Anwendungsentwickler oder das Testteam zur Nutzung bereitsteht, erstellt der Datenbankentwickler das DAC-Projekt. Dabei wird eine DAC-Paketdatei erstellt, die zur Bereitstellung der DAC verwendet werden kann.

Weitere Informationen über DAC-Projekte finden Sie unter Implementieren von Datenebenenanwendungen.

Datenebenenanwendungs-Paket

Wenn eine DAC zur Bereitstellung verfügbar ist, wird sie in ein DAC-Paket integriert. Dies ist eine Datei, in der die DAC-Definition enthalten ist. Das DAC-Paket ist eine zentrale Bereitstellungseinheit und ist in etwa mit einer ausführbaren Datei vergleichbar, die die Bereitstellungseinheit für Anwendungscode darstellt. Ein DAC-Paket wird normalerweise in Verbindung mit einer ausführbaren Anwendungsdatei erstellt. Während die Systemadministratoren die ausführbare Datei für die Anwendungsebene oder die Clientcomputer bereitstellen, stellen die Datenbankadministratoren das zugehörige DAC-Paket für eine Database Engine (Datenbankmodul)-Instanz bereit. 

Ein Entwicklungsteam entwickelt z. B. eine aus drei Ebenen bestehende Anwendung mit dem Namen "Finance". Der Build 1.0.1.123 der Anwendung durchläuft erfolgreich alle Akzeptanztests und kann im Produktionssystem bereitgestellt werden. Die Anwendungsentwickler übergeben eine Version der Datei 1.0.1.123 Finance.exe an die Administratoren des Produktionssystems, die diese auf den Produktionsanwendungsservern bereitstellen. Die Datenbankentwickler übergeben eine Version der Datei 1.0.1.123 Finance.dacpac an die Administratoren der Produktionsdatenbank, die diese für eine Database Engine (Datenbankmodul)-Produktionsinstanz bereitstellen.

Ein DAC-Paket ist eine ZIP-Datei, die mehrere XML-Dateien enthält. Weitere Informationen zum Inhalt von DAC-Paketdateien finden Sie in Dokumente zu Microsoft SQL Server-Dateiformaten (möglicherweise auf Englisch).

Instanzen von Datenebenenanwendungen

Sobald eine DAC für eine Database Engine (Datenbankmodul)-Instanz bereitgestellt wird, wird sie zu einer DAC-Instanz:

  • Eine Datenbank wird mit den Standard-Datenbankeigenschaften für diese Database Engine (Datenbankmodul)-Instanz erstellt. Die in der DAC definierten Datenbankobjekte werden in der neuen Datenbank erstellt.

  • Alle in der DAC definierten Objekte auf Instanzebene, z. B. Anmeldenamen, werden erstellt.

  • Die ursprüngliche DAC-Definition und die Metadaten zur DAC-Instanz werden in der msdb-Systemdatenbank (der Master-Datenbank in SQL Azure) gespeichert.

Nachdem die Instanz bereitgestellt wurde, können Benutzer mit der Verwendung der Objekte beginnen und Daten in die für die DAC erstellte Datenbank aufnehmen.

Erstellen von Datenebenenanwendungen für vorhandene Datenbanken

Sie können den Assistenten zum Extrahieren von Datenebenenanwendungen verwenden, um eine DAC-Definition aus einer vorhandenen Datenbank zu extrahieren. Die DAC-Definition enthält die ausgewählten Objekte aus der Datenbank sowie zugehörige Objekte auf Instanzebene, z. B. die den Datenbankbenutzern zugeordneten Anmeldenamen. Der Assistent integriert die DAC-Definition in ein DAC-Paket. Das extrahierte DAC-Paket wird dann in der Regel in ein DAC-Projekt in Visual Studio importiert, wo mit der Entwicklung der nächsten Version der Anwendung begonnen wird. Sie können das extrahierte Paket auch verwenden, um die DAC für eine andere Database Engine (Datenbankmodul)-Instanz bereitzustellen.

Außerdem können Sie eine DAC mithilfe des Assistenten zum Registrieren von Datenebenenanwendungen für eine vorhandene Datenbank registrieren. Der Assistent erstellt eine DAC-Definition, die die Objekte in der vorhandenen Datenbank enthält, und speichert die Definition anschließend in der msdb-Datenbank (der Master-Datenbank in SQL Azure). Wenn es sich bei der Database Engine (Datenbankmodul)-Instanz um eine im SQL Server-Hilfsprogramm verwaltete Instanz handelt, wird die DAC-Registrierung als bereitgestellte DAC auf den Steuerungspunkt für das Hilfsprogramm hochgeladen.