Bereitstellen einer Datenebenenanwendung

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

Mithilfe eines Assistenten oder eines PowerShell-Skripts können Sie eine Datenebenenanwendung (DAC) von einem DAC-Paket für eine vorhandene Instanz der Datenbank-Engine oder der Azure SQL-Datenbank bereitstellen.

Der Bereitstellungsprozess registriert eine DAC-Instanz, indem die DAC-Definition in der msdb Systemdatenbank (master in SQL-Datenbank) gespeichert wird. Erstellt eine Datenbank und füllt diese Datenbank dann mit allen datenbankobjekten auf, die im DAC definiert sind.

Mehrfaches Bereitstellen desselben DAC-Pakets

Sie können dasselbe DAC-Paket mehrmals in einer einzigen Instanz des Datenbankmoduls bereitstellen, aber Sie müssen die Bereitstellungen einzeln ausführen. Der für jede Bereitstellung angegebene DAC-Instanzname muss innerhalb der Instanz des Datenbankmoduls eindeutig sein.

Datenbankoptionen und -einstellungen

Die während der Bereitstellung erstellte Datenbank verfügt standardmäßig über alle Standardeinstellungen der CREATE DATABASE-Anweisung mit folgenden Ausnahmen:

  • Für Datenbanksortierung und Kompatibilitätsgrad werden die im DAC-Paket definierten Werte festgelegt. Ein aus einem Datenbankprojekt in SQL Server Developer Tools erstelltes DAC-Paket verwendet die im Datenbankprojekt festgelegten Werte. Ein aus einer vorhandenen Datenbank extrahiertes Paket verwendet die Werte aus der ursprünglichen Datenbank.

  • Sie können einige der Datenbankeinstellungen, z. B. Datenbanknamen und Dateipfade, auf der Seite Konfiguration aktualisieren anpassen. Sie können die Dateipfade beim Bereitstellen in der SQL-Datenbank nicht festlegen.

Einige Datenbankoptionen wie VERTRAUENSWÜRDIG, DB_CHAINING und HONOR_BROKER_PRIORITY können nicht im Rahmen des Bereitstellungsprozesses angepasst werden. Physische Eigenschaften, z. B. die Anzahl der Dateigruppen oder die Anzahl und Größe von Dateien, können im Rahmen des Bereitstellungsprozesses nicht geändert werden. Nach Abschluss der Bereitstellung können Sie die ALTER DATABASE-Anweisung, SQL Server Management Studio oder SQL Server PowerShell verwenden, um die Datenbank anzupassen.

Beschränkungen und Einschränkungen

Ein DAC kann in der SQL-Datenbank oder einer Instanz des Datenbankmoduls bereitgestellt werden, in dem SQL Server 2005 (9.x) Service Pack 4 (SP4) oder höher ausgeführt wird. Wenn Sie einen DAC mit einer höheren Version erstellen, enthält der DAC möglicherweise Objekte, die von SQL Server 2005 (9.x) nicht unterstützt werden. Sie können diese DACs nicht in Instanzen von SQL Server 2005 (9.x) bereitstellen.

Sicherheit und Berechtigungen

Anmeldenamen für die Authentifizierung werden 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 Windows-Authentifizierungsanmeldungen nicht erforderlich, da ihre Kennwörter nicht von SQL Server verwaltet werden.

Eine DAC kann nur von Mitgliedern der festen Serverrollen sysadmin oder serveradmin bereitgestellt werden bzw. unter Verwendung von Anmeldenamen aus der festen Serverrolle dbcreator, die über ALTER ANY LOGIN-Berechtigungen verfügen. Das integrierte SQL Server-Systemadministratorkonto namens sa kann auch einen DAC bereitstellen.

Für die Bereitstellung eines DAC mit Anmeldungen bei der SQL-Datenbank ist die Mitgliedschaft in den Rollen "loginmanager" oder "serveradmin" erforderlich. Für die Bereitstellung eines DAC ohne Anmeldung bei der SQL-Datenbank ist eine Mitgliedschaft in den Rollen "dbmanager" oder "serveradmin" erforderlich.

Bereitstellen einer DAC mithilfe des Assistenten

  1. Erweitern Sie im Objekt-Explorerden Knoten für die Instanz, für die Sie die DAC bereitstellen möchten.

  2. Klicken Sie mit der rechten Maustaste auf den Knoten Datenbanken, und wählen Sie Datenebenenanwendung bereitstellen... aus.

  3. Schließen Sie die Dialogfelder des Assistenten ab, und wählen Sie "Fertig stellen" aus.

Im Folgenden erfahren Sie mehr über einige Seiten des Assistenten:

Seite "DAC-Paket auswählen"

Geben Sie das DAC-Paket an, das die bereitzustellende Datenebenenanwendung enthält. Die Seite durchläuft drei Statusübergänge.

Auswählen des DAC-Pakets

Wählen Sie das bereitzustellende DAC-Paket aus. Das DAC-Paket muss eine gültige DAC-Paketdatei sein und die Erweiterung .dacpac aufweisen.

DAC-Paket : Geben Sie den Pfad und den Dateinamen des DAC-Pakets an, das die bereitzustellende Datenebenenanwendung enthält. Sie können die Schaltfläche Durchsuchen rechts neben dem Feld auswählen, um zum Speicherort des DAC-Pakets zu wechseln.

Anwendungsname : Ein schreibgeschütztes Feld mit dem DAC-Namen, der beim Erstellen oder Extrahieren der DAC aus einer Datenbank zugewiesen wurde.

Version : Ein schreibgeschütztes Feld mit der Version, die beim Erstellen oder Extrahieren der DAC aus einer Datenbank zugewiesen wurde.

Beschreibung: Ein schreibgeschütztes Feld mit der Beschreibung, die beim Erstellen oder Extrahieren der DAC aus einer Datenbank erstellt wurde.

Überprüfen des DAC-Pakets

Zeigt eine Statusanzeige an, da der Assistent bestätigt, dass es sich bei der ausgewählten Datei um ein gültiges DAC-Paket handelt. Wenn das DAC-Paket überprüft wird, geht der Assistent zur abschließenden Version der Seite Paket auswählen über. Dort können Sie die Ergebnisse der Überprüfung einsehen. Wenn die Datei kein gültiges DAC-Paket ist, verbleibt der Assistent im Select DAC-Paket. Wählen Sie entweder ein anderes gültiges DAC-Paket aus, oder brechen Sie den Assistenten ab, und generieren Sie ein neues DAC-Paket.

Seite "Richtlinie überprüfen"

Überprüfen Sie die Auswertungsergebnisse der DAC-Richtlinie zur Serverauswahl (falls verwendet). Die DAC-Serverauswahlrichtlinie ist optional und dem DAC zugewiesen, wenn sie in Visual Studio erstellt wird. Die Richtlinie verwendet die Serverauswahlrichtlinien-Facets, um Bedingungen anzugeben, die eine Instanz des Datenbankmoduls erfüllen soll, um den DAC zu hosten.

Auswertungsergebnisse der Richtlinienbedingungen: Zeigt an, ob die Bedingungen der Richtlinie zur DAC-Bereitstellung erfüllt sind. Die Auswertungsergebnisse für die einzelnen Bedingungen werden in einer separaten Zeile angezeigt.

Die folgenden Serverauswahlrichtlinien werden beim Bereitstellen einer DAC in SQL-Datenbank immer als "false" ausgewertet: Betriebssystemversion, Sprache, aktivierte Benannte Rohre, Plattform und TCP aktiviert.

Richtlinienverletzungen ignorieren : Verwenden Sie dieses Kontrollkästchen, um mit der Bereitstellung fortzufahren, wenn eine oder mehrere Richtlinienbedingungen nicht erfüllt wurden. Wählen Sie diese Option nur aus, wenn Sie sicher sind, dass alle Bedingungen, die fehlgeschlagen sind, den erfolgreichen Vorgang des DAC nicht verhindern.

Seite "Konfiguration aktualisieren"

Geben Sie die Namen der bereitgestellten DAC-Instanz und der bei der Bereitstellung erstellten Datenbank an, und legen Sie Datenbankoptionen fest.

Datenbankname : Geben Sie den Namen der Datenbank an, die von der Bereitstellung erstellt werden soll. Standardmäßig wird der Name der Quelldatenbank verwendet, aus der die DAC extrahiert wurde. Der Name muss innerhalb der Instanz des Datenbankmoduls eindeutig sein und die Regeln für Datenbankmodul-IDs erfüllen.

Wenn Sie den Datenbanknamen ändern, werden die Namen der Datendatei und Protokolldateien entsprechend dem neuen Wert geändert.

Der Datenbankname wird auch als Name der DAC-Instanz verwendet. Der Instanzname wird auf dem Knoten für den DAC unter dem Knoten "Data-tier Applications " im Objekt-Explorer angezeigt.

Die folgenden Optionen gelten nicht für SQL-Datenbank und werden beim Bereitstellen in sql-Datenbank nicht angezeigt.

Verwenden Sie den Standarddatenbankspeicherort – Wählen Sie diese Option aus, um die Datenbankdaten und Protokolldateien am Standardspeicherort für die Instanz des Datenbankmoduls zu erstellen. Die Dateinamen werden mithilfe des Datenbanknamens erstellt.

Datenbankdateien angeben : Wählen Sie diese Option aus, um einen anderen Speicherort oder Namen für die Daten- und Protokolldateien anzugeben.

Pfad und Name der Datendatei : Geben Sie den vollständigen Pfad- und Dateinamen für die Datendatei an. Das Feld wird mit dem Standardpfad und -dateinamen aufgefüllt. Bearbeiten Sie die Zeichenfolge im Feld, um den Standardeintrag zu ändern, oder verwenden Sie die Schaltfläche Durchsuchen, um zum Ordner zu navigieren, in dem die Datendatei abgelegt werden soll.

Pfad und Name der Protokolldatei : Geben Sie den vollständigen Pfad- und Dateinamen für die Protokolldatei an. Das Feld wird mit dem Standardpfad und -dateinamen aufgefüllt. Bearbeiten Sie die Zeichenfolge im Feld, um den Standardeintrag zu ändern, oder verwenden Sie die Schaltfläche Durchsuchen , um zum Ordner zu navigieren, in dem die Protokolldatei abgelegt werden soll.

Seite "Zusammenfassung"

Verwenden Sie diese Seite, um die Aktionen zu überprüfen, die der Assistent beim Bereitstellen des DAC ausführt.

Die folgenden Einstellungen werden zur Bereitstellung der DAC verwendet. – Überprüfen Sie die angezeigten Informationen darauf, ob die ergriffenen Maßnahmen richtig sind. Im Fenster werden das ausgewählte DAC-Paket und der für die bereitgestellte DAC-Instanz ausgewählte Name angezeigt. Im Fenster werden auch die Einstellungen angezeigt, die beim Erstellen der mit der DAC verbundenen Datenbank verwendet werden.

Seite "Bereitstellen"

Auf dieser Seite wird angegeben, ob der Bereitstellungsvorgang erfolgreich war oder fehlgeschlagen ist.

DAC wird bereitgestellt : Gibt an, ob die Aktionen zur Bereitstellung der DAC erfolgreich oder fehlerhaft waren. Überprüfen Sie die Informationen, um zu bestimmen, ob die einzelnen Aktionen erfolgreich waren oder fehlgeschlagen sind. Für alle Aktionen, die fehlerhaft waren, ist in der Spalte Ergebnis ein Link enthalten. Klicken Sie auf den Link, um einen Bericht des für diese Aktion aufgetretenen Fehlers anzuzeigen.

Bericht speichern : Klicken Sie auf diese Schaltfläche, um den Bereitstellungsbericht in einer HTML-Datei zu speichern. In der Datei ist der Status der einzelnen Aktionen aufgeführt, einschließlich aller durch die Aktionen generierten Fehler. Der Standardordner ist der Ordner "SQL Server Management Studio\DAC Packages" im Ordner "Dokumente" unter Ihrem Windows-Konto.

Nutzen von PowerShell

  1. Erstellen Sie ein SMO-Serverobjekt, und legen Sie es auf die Instanz fest, auf der Sie die DAC bereitstellen möchten.

  2. Öffnen Sie ein ServerConnection -Objekt, und stellen Sie eine Verbindung mit derselben Instanz her.

  3. Laden Sie die DAC-Paketdatei mithilfe von System.IO.File .

  4. Verwenden Sie add_DacActionStarted und add_DacActionFinished , um die DAC-Bereitstellungsereignisse zu abonnieren.

  5. Legen Sie die DatabaseDeploymentPropertiesfest.

  6. Verwenden Sie die DacStore.Install -Methode zum Bereitstellen der DAC.

  7. Schließen Sie den Dateidatenstrom, der zum Lesen der DAC-Paketdatei verwendet wurde.

Im folgenden Beispiel wird ein DAC mit dem Namen "MyApplication" in einer Standardinstanz des Datenbankmoduls mithilfe einer DAC-Definition aus einem MyApplication.dacpac-Paket bereitgestellt.

PowerShell-Beispiele

Im folgenden Beispiel wird ein DAC mit dem Namen "MyApplication" in einer Standardinstanz des Datenbankmoduls mithilfe einer DAC-Definition aus einem MyApplication.dacpac-Paket bereitgestellt.

## Set a SMO Server object to the default instance on the local computer.
CD SQLSERVER:\SQL\localhost\DEFAULT
$server = Get-Item .
  
## Open a Common.ServerConnection to the same instance.
$serverConnection = New-Object Microsoft.SqlServer.Management.Common.ServerConnection($server.ConnectionContext.SqlConnectionObject)
$serverConnection.Connect()
$dacStore = New-Object Microsoft.SqlServer.Management.Dac.DacStore($serverConnection)
  
## Load the DAC package file.
$dacpacPath = "C:\MyDACs\MyApplication.dacpac"
$fileStream = [System.IO.File]::Open($dacpacPath,[System.IO.FileMode]::OpenOrCreate)
$dacType = [Microsoft.SqlServer.Management.Dac.DacType]::Load($fileStream)
  
## Subscribe to the DAC deployment events.
$dacStore.add_DacActionStarted({Write-Host `n`nStarting at $(Get-Date) :: $_.Description})
$dacStore.add_DacActionFinished({Write-Host Completed at $(Get-Date) :: $_.Description})
  
## Deploy the DAC and create the database.
$dacName  = "MyApplication"
$evaluateTSPolicy = $true
$deployProperties = New-Object Microsoft.SqlServer.Management.Dac.DatabaseDeploymentProperties($serverConnection,$dacName)
$dacStore.Install($dacType, $deployProperties, $evaluateTSPolicy)
$fileStream.Close()

Weitere Informationen