Implementieren von Datenebenenanwendungen

Durch eine Datenebenenanwendung (DAC) werden die SQL Server Database Engine (Datenbankmodul)-Schemas und -Objekte definiert, die zur Unterstützung einer Anwendung erforderlich sind. Eine DAC kann auf eine der beiden folgenden Weisen implementiert werden:

  • Eine DAC kann programmiert und mithilfe eines Datenebenenanwendungsprojekts für SQL Server in Microsoft Visual Studio 2010 erstellt werden.

  • Eine DAC kann mit dem Assistenten zum Extrahieren von Datenebenenanwendungen in SQL Server Management Studio aus einer vorhandenen Datenbank extrahiert werden.

Im Buildprozess sowohl zum Extrahieren als auch zum Erstellen wird eine DAC-Definition angelegt, die die Objekte und Metadaten angibt. Die DAC-Definition wird in ein DAC-Paket integriert. Dies ist eine Datei, die ein Manifest aller Objekt- und Richtliniendefinitionen enthält, die in der DAC enthalten sind. Das DAC-Paket kann für folgende Zwecke verwendet werden:

  • Stellen Sie die aktuelle Version der DAC für Entwicklungs-, Test- und Produktionsinstanzen von Database Engine (Datenbankmodul) und SQL Azure bereit. Verwenden Sie den Assistenten zum Bereitstellen von Datenebenenanwendungen, um eine neue Instanz der DAC bereitzustellen. Mit dem Assistenten zum Aktualisieren von Datenebenenanwendungen aktualisieren Sie eine vorhandene DAC-Instanz, die mithilfe einer früheren DAC-Version bereitgestellt wurde.

  • Beginnen Sie in Visual Studio mit der Entwicklung der nächsten DAC-Version, indem Sie die DAC in ein neues SQL Server-Datenebenenanwendungs-Projekt in Visual Studio importieren.

Datenebenenanwendungen im Entwicklungsprozess

DACs werden mithilfe von DAC-Projekten in Visual Studio entwickelt. Mithilfe eines DAC-Projekts kann die Entwicklung von Datenebenenobjekten nahtlos mit der Entwicklungsumgebung der Anwendung integriert werden, die für die Verwendung der Objekte programmiert wird. Ein Datenbankentwickler erstellt die DAC mithilfe eines DAC-Projekts in Visual Studio. Das DAC-Projekt kann in die übergreifende Entwicklungsprojektmappe der Anwendung in Visual Studio Team System integriert werden. Während die Anwendungsentwickler den Anwendungscode schreiben, programmiert der Datenbankentwickler die Definitionen der Datenebenenobjekte in der DAC.

Bei einer neuen Anwendung erstellt der Datenbankentwickler das DAC-Projekt und fügt ihm die Objekte, sobald sie entwickelt sind, sukzessiv hinzu. Wenn das Projekt für eine neue Version einer vorhandenen Anwendung gestartet wird, kann der Datenbankentwickler ein DAC-Paket aus der aktuell von der Anwendung verwendeten Datenbank extrahieren und dieses in das DAC-Projekt importieren.

Der Entwickler kann dem DAC-Projekt folgende Elemente hinzufügen:

  • 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. 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 eingebettet werden können. Beispiele sind Anwendungsdokumente, Pläne zur Datengenerierung, die die Erstellung aussagekräftiger Testdaten skizzieren, oder Skripts, die vor und nach der Bereitstellung ausgeführt werden.

Zu Testzwecken kann der Datenbankentwickler das DAC-Projekt für eine Testinstanz des Datenbankmoduls bereitstellen. Alternativ kann der Entwickler das DAC-Projekt erstellen, von dem eine DAC-Definition in einem DAC-Paket erstellt wird. Die DAC-Definition enthält die Metadaten für alle im DAC-Projekt definierten Elemente. Das DAC-Paket ist eine gezippte XML-Datei, die die DAC-Definition enthält und zur Bereitstellung oder Aktualisierung einer DAC verwendet wird. Entwickler und Tester können den Assistenten zum Bereitstellen von Datenebenenanwendungen verwenden, um die DAC in ihren Testsystemen bereitzustellen.

Nachdem die Anwendungsentwicklung abgeschlossen wurde, wird das DAC-Projekt angelegt, um die Produktionsversion des DAC-Pakets zu erstellen. Das Anwendungsprojekt zum Erstellen der ausführbaren Anwendungsdateien wird auf ähnliche Weise angelegt. Das DAC-Paket wird an die Administratoren der Produktionsdatenbank übergeben, die es für die Instanzen des Database Engine (Datenbankmodul) bereitstellen, das in der Produktionsumgebung ausgeführt wird, oder für SQL Azure.

Nachdem eine DAC-Version in der Produktionsumgebung bereitgestellt wurde, kann mit der Entwicklung der nächsten Version der DAC begonnen werden. Der Datenbankentwickler erstellt eine neue Version des DAC-Projekts mit den Definitionen aller Datenebenenobjekte, so wie sie in dieser Version vorhanden sind. Wenn das Projekt in ein neues DAC-Paket integriert wird, kann das gleiche Paket verwendet werden, sowohl um eine neue Instanz der DAC bereitzustellen als auch um eine vorhandene Instanz auf die neue Version zu aktualisieren. Der Assistent zum Aktualisieren von Datenebenenanwendungen vergleicht das Schema der vorhandenen DAC-Instanz und das DAC-Paket 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 zu DAC-Projekten in der Visual Studio-Dokumentation finden Sie unter dem Thema zum Erstellen und Verwalten von Datenebenenanwendungen.

Extrahieren einer DAC aus einer Datenbank

Der Assistent zum Extrahieren von Datenebenenanwendungen wird verwendet, um eine DAC-Definition auf der Grundlage einer vorhandenen Datenbank zu erstellen. Die DAC-Definition enthält die Metadaten, durch die alle Objekte in der Datenbank definiert werden, beliebige Anmeldenamen, die Sicherheitsprinzipalen in der Datenbank zugeordnet sind, sowie die Datenbanksortierung und den Kompatibilitätsgrad. Die DAC-Definition enthält keine Benutzerdaten aus der Quelldatenbank. Die DAC-Definition wird in eine DAC-Paketdatei integriert.

Der Assistent kann nur Objekte extrahieren, die in Datenebenenanwendungen unterstützt werden. Nachdem Sie die Eigenschaften, z. B. den DAC-Namen und die DAC-Version angegeben haben, lädt der Assistent alle Objekte aus der Datenbank und überprüft, ob sie in einer DAC unterstützt werden. Daraufhin zeigt der Assistent eine Zusammenfassungsseite an, auf der die Objekte in drei Kategorien unterteilt sind:

  • Objekte mit einem roten Symbol zur Kennzeichnung eines ungültigen Eintrags werden in einer DAC nicht unterstützt.

  • Objekte mit einem gelben Warnsymbol werden in einer DAC zwar unterstützt, sie verfügen jedoch über eine Abhängigkeit zu einem nicht unterstützten Objekt.

  • Objekte mit einem grünen Erfolgssymbol werden in einer DAC unterstützt und verfügen über keine Abhängigkeiten zu Objekten, die in einer DAC nicht unterstützt werden.

Wenn der Assistent Objekte erkennt, die in einer DAC nicht unterstützt werden, listet er die Objekte in einem Zusammenfassungsbericht auf und erstellt kein DAC-Paket. Wenn alle Objekte über ein grünes Erfolgssymbol verfügen, können Sie mit der Erstellung des DAC-Pakets fortfahren.

Das extrahierte DAC-Paket kann für folgende Zwecke verwendet werden:

  • Importieren Sie die DAC in ein DAC-Projekt in Visual Studio, wo ein Datenbankentwickler mit der Entwicklung der nächsten Version der DAC beginnen kann.

  • Stellen Sie eine neue Instanz der DAC bereit.

  • Aktualisieren Sie eine zuvor bereitgestellte Version der DAC.

Weitere Informationen zu den unterstützten Objekten finden Sie unter DAC-Unterstützung für SQL Server-Objekte und -Versionen.

Weitere Informationen zum Starten des Assistenten finden Sie unter Vorgehensweise: Extrahieren einer DAC aus einer Datenbank.

Anmeldekennwörter

Zur Erhöhung der Sicherheit werden die Anmeldenamen für die SQL Server-Authentifizierung ohne Kennwort in einem DAC-Paket gespeichert. Sobald das Paket bereitgestellt oder aktualisiert wird, wird der Anmeldename als deaktivierter Anmeldename mit einem generierten Kennwort erstellt. Um die Anmeldenamen zu aktivieren, melden Sie sich unter einem Anmeldenamen an, der über die ALTER ANY LOGIN-Berechtigung verfügt, und verwenden ALTER LOGIN, um den Anmeldenamen zu aktivieren und ein neues Kennwort zuzuweisen, das dem Benutzer mitgeteilt werden kann. Dies ist für Anmeldenamen der Windows-Authentifizierung nicht erforderlich, da die zugehörigen Kennwörter nicht von SQL Server verwaltet werden.