Extrahieren einer DAC aus einer Datenbank

Verwenden Sie entweder den Assistenten zum Extrahieren von Datenebenenanwendungen oder ein Windows PowerShell-Skript, um ein Datenebenenanwendungs-Paket (DAC) aus einer vorhandenen SQL Server-Datenbank zu extrahieren. Bei der Extraktion wird eine DAC-Paketdatei erstellt, die Definitionen der Datenbankobjekte und ihrer verwandten Elemente auf Instanzebene enthält. Eine DAC-Paketdatei enthält z. B. die Datenbanktabellen, gespeicherten Prozeduren, Sichten und Benutzer zusammen mit den Anmeldenamen, die den Datenbankbenutzern zugeordnet sind.

  • Vorbereitungen: Einschränkungen, Berechtigungen

  • Extrahieren einer DAC mit: dem Assistenten zum Extrahieren von Datenebenenanwendungen, PowerShell

Vorbereitungen

Sie können DAC aus Datenbanken extrahieren, die sich auf Instanzen von SQL-Datenbank oder SQL Server 2000 Service Pack 4 (SP4) oder höher befinden. Wenn der Extrahierungsprozess für eine Datenbank ausgeführt wird, die über eine DAC bereitgestellt wurde, werden nur die Definitionen der Objekte in der Datenbank extrahiert. Der Prozess verweist nicht auf die in msdb (master in SQL-Datenbank) registrierte DAC. Der Extrahierungsprozess registriert die DAC-Definition nicht in der aktuellen Instanz des Datenbankmoduls. Weitere Informationen zum Registrieren einer DAC finden Sie unter Registrieren einer Datenbank als eine DAC.

Einschränkungen

Eine DAC kann nur aus einer Datenbank in SQL-Datenbank oder SQL Server 2005 Service Pack 4 (SP4) oder höher extrahiert werden. Eine DAC kann nicht registriert werden, wenn die Datenbank in einer DAC nicht unterstützte Objekte oder enthaltene Benutzer enthält. Weitere Informationen zu den in einer DAC unterstützten Objekttypen finden Sie unter DAC-Unterstützung für SQL Server-Objekte und -Versionen.

[Nach oben]

Berechtigungen

Zum Registrieren einer DAC sind mindestens die ALTER ANY LOGIN-Berechtigung und die VIEW DEFINITION-Berechtigung auf Datenbankebene sowie SELECT-Berechtigungen für sys.sql_expression_dependencies erforderlich. Zum Extrahieren einer DAC sind nur Mitglieder der festen Serverrolle securityadmin berechtigt, die ebenfalls Mitglieder der festen Datenbankrolle database_owner in der Datenbank waren, aus der die DAC extrahiert wird. Mitglieder der festen Serverrolle "sysadmin" oder des integrierten SQL Server-Systemadministratorkontos sa sind ebenfalls berechtigt, eine DAC zu extrahieren.

[Nach oben]

Verwenden des Assistenten zum Registrieren von Datenebenenanwendungen

So extrahieren Sie eine DAC mithilfe eines Assistenten

  1. Erweitern Sie im Objekt-Explorer den Knoten für die Instanz, die die Datenbank enthält, aus der DAC extrahiert werden soll.

  2. Erweitern Sie den Knoten Datenbanken.

  3. Klicken die mit der rechten Maustaste auf den Knoten für die Datenbank, aus der die DAC extrahiert werden soll, zeigen Sie auf Tasks, und wählen Sie dann Datenebenenanwendung extrahieren aus.

  4. Schließen Sie die Dialogfenster des Assistenten ab:

    1. Seite "Einführung"

    2. Seite "Daten auswählen"

    3. Seite "Eigenschaften festlegen"

    4. Seite "Überprüfung und Zusammenfassung"

    5. Seite "Paket erstellen"

[Nach oben]

Seite "Einführung"

Auf dieser Seite werden die Schritte zum Extrahieren einer Datenebenenanwendung beschrieben.

Diese Seite nicht mehr anzeigen. – Aktivieren Sie dieses Kontrollkästchen, damit die Seite in Zukunft nicht mehr angezeigt wird.

Weiter > – Die Seite Methode auswählen wird geöffnet.

Abbrechen – Beendet den Assistenten, ohne eine Datenebenenanwendung aus der Datenbank zu extrahieren.

[Extrahierungs-Assistent]

Seite "Daten auswählen"

Auf dieser Seite des Assistenten können Sie die Verweisdaten auswählen, die Sie in die Paketdatei der Datenebenenanwendung (DAC) einschließen möchten. Das Einschließen von Daten in das DAC-Paket ist optional. Das DAC-Paket enthält bereits das Schema aller unterstützten Datenbankobjekte und Instanzobjekte für die Datenbank.

In die DAC-Paketdatei können Sie bis zu 10 MB Verweisdaten einschließen. Bei Tabellen, die in der DAC eingeschlossen werden sollen, dürfen in den Paketen keine BLOB-Datentypen (Binary Large Object) enthalten sein, z. B. image oder varchar(max). Wenn Sie zum Übertragen in eine andere Datenbank größere Datenmengen extrahieren möchten, verwenden Sie SQL Server Integration Services, das Hilfsprogramm zum Massenkopieren oder eines der zahlreichen weiteren Datenmigrationsverfahren.

Datenbanktabelle – Aktivieren Sie das Kontrollkästchen neben den Datenbanktabellen mit den Daten, die Sie in das DAC-Paket einschließen möchten. Sie können bis zu zehn Tabellen mit jeweils maximal 10.000 Zeilen auswählen.

[Extrahierungs-Assistent]

Seite "Eigenschaften festlegen"

Mithilfe dieser Seite des Assistenten können Sie die Datenebenenanwendung (DAC) beschreiben. Diese Eigenschaften werden verwendet, um die DAC zu identifizieren und sie von anderen zu unterscheiden.

Name – Dieser Name identifiziert die DAC. Er kann sich vom Namen der DAC-Paketdatei unterscheiden und sollte die Anwendung beschreiben. Wenn die Datenbank z. B. für eine Finanzanwendung verwendet wird, möchten Sie sie möglicherweise "DAC Finanzen" nennen.

Version (xx.xx.xx.xx verwenden, wobei 'x' einer Zahl entspricht) – Ein numerischer Wert, der die Version der DAC identifiziert. Die DAC-Version wird in Visual Studio verwendet, um die Version der DAC zu identifizieren, an der die Entwickler arbeiten. Bei der Bereitstellung einer DAC wird die Version in der msdb-Datenbank gespeichert und kann später unter dem Knoten Datenebenenanwendungen in SQL Server Management Studio angezeigt werden.

Beschreibung: – Optional. Beschreibt die DAC. Bei der Bereitstellung einer DAC wird die Beschreibung in der msdb-Datenbank gespeichert und kann später unter dem Knoten Datenebenenanwendungen in Management Studio angezeigt werden.

Speichern Sie In DAC-Paketdatei speichern (Erweiterung '.dacpac' in den Dateinamen aufnehmen): – Speichert die DAC in einer DAC-Paketdatei mit der Erweiterung .dacpac. Klicken Sie auf die Schaltfläche Durchsuchen, um Namen und Speicherort für die Datei anzugeben.

Vorhandene Datei überschreiben – Aktivieren Sie dieses Kontrollkästchen, um die DAC-Paketdatei zu ersetzen, wenn bereits eine Datei mit demselben Namen vorhanden ist.

[Extrahierungs-Assistent]

Seite "Überprüfung und Zusammenfassung"

Auf dieser Seite überprüft der Assistent, ob alle Datenbankobjekte von einer Datenebenenanwendung (DAC) unterstützt werden. Er überprüft auch Abhängigkeiten über Datenbankobjekte hinweg, um den Satz von Objekten zu bestimmen, die in DAC enthalten sein können. Anschließend zeigt er den Überprüfungsbericht an und fasst die Optionen zusammen, die Sie in diesem Assistenten aktiviert haben. Um eine Option zu ändern, klicken Sie auf Zurück. Um mit dem Extrahieren einer DAC zu beginnen, klicken Sie auf Weiter.

HinweisHinweis

Wenn eines oder mehrere Objekte nicht von einer DAC unterstützt werden, wird die Schaltfläche Weiter deaktiviert, und der Extrahierungsprozess wird nicht fortgesetzt. In solchen Fällen wird empfohlen, die nicht unterstützten Objekte zu entfernen und diesen Assistenten anschließend erneut auszuführen.

Zusammenfassung – Unter DAC-Eigenschaften wird eine Übersicht zu den von Ihnen ausgewählten Optionen aufgeführt. Die Ergebnisse der Überprüfung sind unter DAC-Objekte aufgeführt. Es gibt drei Typen von Überprüfungsergebnissen:

  • Objekte, die erfolgreich in die DAC eingeschlossen wurden: Diese Objekte und ihre Abhängigkeiten werden unterstützt und können erfolgreich in die DAC eingeschlossen werden.

  • Objekte, die mit Warnungen in DAC eingeschlossen wurden: Diese Objekte werden unterstützt, sind aber von anderen Objekten abhängig, die nicht in einer DAC unterstützt werden.

  • Objekte, die nicht in DAC eingeschlossen wurden: Diese Objekte werden nicht unterstützt und müssen vor dem Extrahieren einer DAC aus der Datenbank entfernt werden.

Der Überprüfungsprozess überprüft mehrere Ebenen von Abhängigkeiten. Wenn eine gespeicherte Prozedur z. B. von einer Tabelle abhängig ist, die den nicht unterstützten CLR-Datentyp verwendet, wird die gespeicherte Prozedur unter Objekte, die mit Warnungen in DAC eingeschlossen wurden aufgeführt.

Wenn ein oder mehrere Objekte nicht von einer DAC unterstützt werden, wird die Schaltfläche Weiter deaktiviert und der Extrahierungsprozess wird nicht fortgesetzt. In solchen Fällen wird empfohlen, die nicht unterstützten Objekte zu entfernen und diesen Assistenten anschließend erneut auszuführen.

Bericht speichern – Ermöglicht Ihnen das Speichern einer HTML-basierten Datei, in der alle Objekte unter dem Knoten DAC-Objekte der Zusammenfassung aufgeführt sind. Dieser Bericht kann nützlich sein, wenn einige der Datenbankobjekte nicht in einer DAC unterstützt werden. Mithilfe des Berichts können Sie nicht unterstützte Objekte ändern oder entfernen, bevor Sie erneut versuchen, die DAC zu extrahieren.

[Extrahierungs-Assistent]

Seite "Paket erstellen"

Verwenden Sie diese Seite, um den Status des Assistenten zu überwachen, während die Datenebenenanwendung (DAC) extrahiert wird.

Aktion – Während der Aktion DAC-Paketdatei erstellen und speichern extrahiert der Assistent eine DAC aus der SQL Server-Datenbank. Anschließend wird ein DAC-Paket im Arbeitsspeicher erstellt und am von Ihnen angegebenen Speicherort gespeichert. Klicken Sie auf die Links in der Spalte Ergebnis, um das Ergebnis des entsprechenden Schritts anzuzeigen.

Bericht speichern – Klicken Sie hier, um den Status des Assistenten in eine Datei zu speichern.

Fertig stellen – Klicken Sie hier, um den Assistenten nach der Verarbeitung oder bei Auftreten eines Fehlers zu schließen.

[Extrahierungs-Assistent]

Extrahieren einer DAC mit PowerShell

So extrahieren Sie mithilfe der Extract()-Methode in einem PowerShell-Skript eine DAC aus einer Datenbank

  1. Erstellen Sie ein SMO-Serverobjekt und legen Sie dieses für die Instanz fest, die die Datenbank enthält, aus der Sie die DAC extrahieren möchten.

  2. Fügen Sie eine Variable hinzu, die den Namen der Datenbank angibt.

  3. Geben Sie die Metadaten für die DAC an, z. B. DAC-Namen, Version und Beschreibung.

  4. Geben Sie den Pfad und den Dateinamen für die extrahierte DAC-Paketdatei an.

  5. Führen Sie die Extract-Methode mit den oben angegebenen Informationen aus.

[Nach oben]

Beispiel (PowerShell)

Im folgenden Beispiel wird eine DAC mit dem Namen MyApplication aus einer Datenbank mit dem Namen MyDB extrahiert.

## Set a SMO Server object to the default instance on the local computer.
CD SQLSERVER:\SQL\localhost\DEFAULT
$srv = get-item .

## Specify the database to extract to a DAC.
$dbname = "MyDB"

## Specify the DAC metadata.
$applicationname = "MyApplication"
$version = "1.0.0.0"
$description = "This DAC defines the database used by my application."

## Specify the location and name for the extracted DAC package.
$dacpacPath = "C:\MyDACs\MyApplication.dacpac"

## Extract the DAC.
$extractionunit = New-Object Microsoft.SqlServer.Management.Dac.DacExtractionUnit($srv, $dbname, $applicationname, $version)
$extractionunit.Description = $description
$extractionunit.Extract($dacpacPath)

[Nach oben]

Siehe auch

Konzepte

Datenebenenanwendungen