Überprüfen eines DAC-PaketsValidate a DAC Package

GILT FÜR: jaSQL ServerjaAzure SQL-DatenbankneinAzure SQL Data Warehouse neinParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Es wird empfohlen, den Inhalt eines DAC-Pakets vor der Bereitstellung in der Produktionsumgebung sowie die Upgradeaktionen vor dem Aktualisieren einer vorhandenen DAC zu überprüfen.It is a good practice to review the contents of a DAC package before deploying it in production, and to validate the upgrade actions before upgrading an existing DAC. Dies gilt insbesondere für die Bereitstellung von Paketen, die nicht im Unternehmen entwickelt wurden.This is especially true when deploying packages that were not developed in your organization.

  1. Vorbereitungen: VoraussetzungenBefore you begin: Prerequisites

  2. So aktualisieren Sie eine DAC: Anzeigen des Inhalts einer DAC, Anzeigen der Datenbankänderungen, Anzeigen der Upgradeaktionen, Vergleichen von DACsTo upgrade a DAC, using: View the Contents of a DAC, View Database Changes, View Upgrade Actions, Compare DACs

Wir hören Ihnen zu: Wenn Sie in diesem Artikel – beispielsweise in einem Schritt oder Codebeispiel – veraltete oder falsche Informationen finden, lassen Sie es uns bitte wissen.We are listening: If you find something outdated or incorrect in this article, such as a step or a code example, please tell us. Sie können unten auf dieser Seite im Abschnitt Feedback auf die Schaltfläche Diese Seite klicken.You can click the This page button in the Feedback section at the bottom of this page. Wir lesen jedes Feedback zu SQL in der Regel am nächsten Tag.We read every item of feedback about SQL, typically the next day. Vielen Dank.Thanks.

Erforderliche KomponentenPrerequisites

Das Bereitstellen eines DAC-Pakets aus unbekannten oder nicht vertrauenswürdigen Quellen wird nicht empfohlen.We recommend that you do not deploy a DAC package from unknown or untrusted sources. Solche DACs können schädlichen Code enthalten, der möglicherweise unbeabsichtigten Transact-SQLTransact-SQL-Code ausführt oder Fehler verursacht, indem er das Schema ändert.Such DACs could contain malicious code that might execute unintended Transact-SQLTransact-SQL code or cause errors by modifying the schema. Bevor Sie eine DAC aus einer unbekannten oder nicht vertrauenswürdigen Quelle verwenden, stellen Sie sie auf einer isolierten Datenbank-EngineDatabase Engine-Testinstanz bereit, führen DBCC CHECKDB (Transact-SQL) für die Datenbank aus und überprüfen außerdem den Code, z. B. gespeicherte Prozeduren oder sonstigen benutzerdefinierten Code.Before you use a DAC from an unknown or untrusted source, deploy it on an isolated test instance of the Datenbank-EngineDatabase Engine, run DBCC CHECKDB (Transact-SQL) on the database, and also examine the code, such as stored procedures or other user-defined code, in the database.

Anzeigen des Inhalts einer DACView the Contents of a DAC

Es gibt zwei Vorgehensweisen, um den Inhalt eines Datenebenenanwendungs-Pakets (DAC) anzuzeigen.There are two mechanisms for viewing the contents of a data-tier application (DAC) package. Sie können das DAC-Paket in ein DAC-Projekt in SQL Server Developer Tools importieren.You can import the DAC package to a DAC project in SQL Server Developer Tools. Der Inhalt des Pakets kann in einen Ordner entpackt werden.You can unpack the contents of the package to a folder.

Anzeigen einer DAC in SQL Server Developer ToolsView a DAC in SQL Server Developer Tools

  1. Öffnen Sie das Menü Datei, und klicken Sie auf Neu und dann auf Projekt... .Open the File menu, select New, and then select Project....

  2. Wählen Sie die SQL Server -Projektvorlage aus, und geben Sie Name, Speicherortund Projektmappennameein.Select the SQL Server project template, and specify a Name, Location, and Solution name.

  3. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten, und wählen Sie dann Eigenschaften aus.In Solution Explorer, right click the project node and select Properties....

  4. Aktivieren Sie auf der Registerkarte Projekteinstellungen im Abschnitt Ausgabetypen das Kontrollkästchen Datenebenenanwendung (DACPAC-Datei) , und schließen Sie dann das Dialogfeld mit den Eigenschaften.On the Project Settings tab, in the Output Types section, select the Data-tier Application (.dacpac File) check box, and then close the properties dialog.

  5. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten, und wählen Sie Datenebenenanwendung importieren aus.In Solution Explorer, right click the project node and select Import Data-tier Application....

  6. Öffnen Sie mit dem Projektmappen-Explorer alle Dateien in der DAC, z. B. die Richtlinie zur Serverauswahl und die vor und nach der Bereitstellung auszuführenden Skripts.Use Solution Explorer to open all of the files in the DAC, such as the server selection policy and the pre- and post-deployment scripts.

  7. Überprüfen Sie alle Objekte im Schema mithilfe der Schemaansicht , insbesondere auch den Code in Objekten wie Funktionen oder gespeicherten Prozeduren.Use the Schema View to review all of the objects in the schema, particularly reviewing the code in objects such as functions or stored procedures.

Anzeigen einer DAC in einem OrdnerView a DAC in a Folder

  • Entpacken Sie das DAC-Paket in einen Ordner anhand der Anweisungen unter Unpack a DAC Package.Unpack the DAC package into a folder by following the instructions in Unpack a DAC Package.

  • Zeigen Sie den Inhalt der Transact-SQLTransact-SQL -Skripts an, indem Sie sie im Datenbank-EngineDatabase Engine -Abfrage-Editor in Management StudioManagement Studioöffnen.View the contents of the Transact-SQLTransact-SQL scripts by opening them in the Datenbank-EngineDatabase Engine Query Editor in Management StudioManagement Studio.

  • Zeigen Sie den Inhalt der Textdateien in Tools an, z. B. im Editor.View the contents of the text files in tools such as notepad.

Anzeigen von DatenbankänderungenView Database Changes

Nach der Bereitstellung der aktuellen Version einer DAC in der Produktionsumgebung wurden möglicherweise Änderungen direkt an der zugeordneten Datenbank vorgenommen, die einen Konflikt mit dem in einer neuen Version der DAC definierten Schema verursachen.After the current version of a DAC was deployed to production, changes may have been made directly to the associated database that might conflict with the schema defined in a new version of the DAC. Überprüfen Sie vor dem Upgrade auf eine neue Version der DAC, ob solche Änderungen an der Datenbank vorgenommen wurden.Before upgrading to a new version of the DAC, check to see if such changes have been made to the database.

Anzeigen von Datenbankänderungen mit einem AssistentenView Database Changes by Using a Wizard

  1. Führen Sie den Assistenten zum Aktualisieren von Datenebenenanwendungen aus, und geben Sie die derzeit bereitgestellte DAC und das DAC-Paket mit der neuen Version der DAC an.Run the Upgrade Data-tier Application wizard, specifying the currently deployed DAC and the DAC package containing the new version of the DAC.

  2. Überprüfen Sie auf der Seite Änderung erkennen den Bericht der an der Datenbank vorgenommenen Änderungen.On the Detect Change page, review the report of the changes that have been made to the database.

  3. Wählen Sie Abbrechen , wenn Sie das Upgrade nicht fortsetzen möchten.Select Cancel if you do not want to continue with the upgrade.

  4. Weitere Informationen zur Verwendung des Assistenten finden Sie unter Upgrade einer Datenebenenanwendung.For more information on using the wizard, see Upgrade a Data-tier Application.

Anzeigen von Datenbankänderungen mithilfe von PowerShellView Database Changes by Using PowerShell

  1. Erstellen Sie ein SMO-Serverobjekt, und legen Sie es auf die Instanz fest, die die anzuzeigende DAC enthält.Create a SMO Server object and set it to the instance that contains the DAC to be viewed.

  2. Öffnen Sie ein ServerConnection -Objekt, und stellen Sie eine Verbindung mit derselben Instanz her.Open a ServerConnection object and connect to the same instance.

  3. Gibt den DAC-Namen in einer Variablen an.Specify the DAC name in a variable.

  4. Rufen Sie mit der Methode GetDatabaseChanges() ein ChangeResults -Objekt ab, und übergeben Sie das Objekt an eine Textdatei, um einen einfachen Bericht der neuen, gelöschten und geänderten Objekte zu generieren.Use the GetDatabaseChanges() method to retrieve a ChangeResults object, and pipe the object to a text file to generate a simple report of new, deleted, and changed objects.

Anzeigen eines Beispiels für Datenbankänderungen (PowerShell)View Database Changes Example (PowerShell)

Anzeigen eines Beispiels für Datenbankänderungen (PowerShell)View Database Changes Example (PowerShell)

Im folgenden Beispiel werden alle Datenbankänderungen gemeldet, die in einer bereitgestellten DAC namens "MyApplicaiton" vorgenommen wurden.The following example reports any database changes that have been made in a deployed DAC named MyApplicaiton.

## Set a SMO Server object to the default instance on the local computer.  
CD SQLSERVER:\SQL\localhost\DEFAULT  
$srv = get-item .  
  
## Open a Common.ServerConnection to the same instance.  
$serverconnection = New-Object Microsoft.SqlServer.Management.Common.ServerConnection($srv.ConnectionContext.SqlConnectionObject)  
$serverconnection.Connect()  
$dacstore = New-Object Microsoft.SqlServer.Management.Dac.DacStore($serverconnection)  
  
## Specify the DAC instance name.  
$dacName  = "MyApplication"  
  
## Generate the change list and save to file.  
$dacChanges = $dacstore.GetDatabaseChanges($dacName) | Out-File -Filepath C:\DACScripts\MyApplicationChanges.txt  

Anzeigen von UpgradeaktionenView Upgrade Actions

Vor der Verwendung einer neuen Version eines DAC-Pakets zum Aktualisieren einer DAC, die aus einem früheren DAC-Paket bereitgestellt wurde, können Sie einen Bericht generieren, der Transact-SQLTransact-SQL -Anweisungen enthält, die während des Upgrades ausgeführt werden, und die Anweisungen dann überprüfen.Before using a new version of a DAC package to upgrade a DAC that was deployed from an earlier DAC package, you can generate a report that contains the Transact-SQLTransact-SQL statements that will be run during the upgrade, and then review the statements.

Melden von Upgradeaktionen mithilfe eines AssistentenReport Upgrade Actions by Using a Wizard

  1. Führen Sie den Assistenten zum Aktualisieren von Datenebenenanwendungen aus, und geben Sie die derzeit bereitgestellte DAC und das DAC-Paket mit der neuen Version der DAC an.Run the Upgrade Data-tier Application wizard, specifying the currently deployed DAC and the DAC package containing the new version of the DAC.

  2. Überprüfen Sie auf der Seite Zusammenfassung den Bericht der Upgradeaktionen.On the Summary page, review the report of the upgrade actions.

  3. Wählen Sie Abbrechen , wenn Sie das Upgrade nicht fortsetzen möchten.Select Cancel if you do not want to continue with the upgrade.

  4. Weitere Informationen zur Verwendung des Assistenten finden Sie unter Upgrade einer Datenebenenanwendung.For more information on using the wizard, see Upgrade a Data-tier Application.

Melden von Upgradeaktionen mithilfe von PowerShellReport Upgrade Actions by Using PowerShell

  1. Erstellen Sie ein SMO-Serverobjekt, und legen Sie es auf die Instanz fest, die die bereitgestellte DAC enthält.Create a SMO Server object and set it to the instance that contains the deployed DAC.

  2. Öffnen Sie ein ServerConnection -Objekt, und stellen Sie eine Verbindung mit derselben Instanz her.Open a ServerConnection object and connect to the same instance.

  3. Laden Sie die DAC-Paketdatei mithilfe von System.IO.File .Use System.IO.File to load the DAC package file.

  4. Gibt den DAC-Namen in einer Variablen an.Specify the DAC name in a variable.

  5. Rufen Sie mithilfe der Methode GetIncrementalUpgradeScript() eine Liste der Transact-SQL-Anweisungen ab, die bei einem Upgrade ausgeführt werden würden, und übergeben Sie die Liste an eine Textdatei.Use the GetIncrementalUpgradeScript() method to get a list of the Transact-SQL statements an upgrade would run, and pipe the list to a text file.

  6. Schließen Sie den Dateidatenstrom, der zum Lesen der DAC-Paketdatei verwendet wurde.Close the file stream used to read the DAC package file.

Anzeigen eines Beispiels für Upgradeaktionen (PowerShell)View Upgrade Actions Example (PowerShell)

Anzeigen eines Beispiels für Upgradeaktionen (PowerShell)View Upgrade Actions Example (PowerShell)

Im folgenden Beispiel werden die Transact-SQL-Anweisungen gemeldet, die zum Aktualisieren der DAC „MyApplicaiton“ auf das in einer „MyApplication2017.dacpac“-Datei definierte Schema ausgeführt werden würde.The following example reports the Transact-SQL statements that would be run to upgrading a DAC named MyApplicaiton to the schema defined in a MyApplication2017.dacpac file.

## Set a SMO Server object to the default instance on the local computer.  
CD SQLSERVER:\SQL\localhost\DEFAULT  
$srv = get-item .  
  
## Open a Common.ServerConnection to the same instance.  
$serverconnection = New-Object Microsoft.SqlServer.Management.Common.ServerConnection($srv.ConnectionContext.SqlConnectionObject)  
$serverconnection.Connect()  
$dacstore = New-Object Microsoft.SqlServer.Management.Dac.DacStore($serverconnection)  
  
## Load the DAC package file.  
$dacpacPath = "C:\MyDACs\MyApplication2017.dacpac"  
$fileStream = [System.IO.File]::Open($dacpacPath,[System.IO.FileMode]::OpenOrCreate)  
$dacType = [Microsoft.SqlServer.Management.Dac.DacType]::Load($fileStream)  
  
## Specify the DAC instance name.  
$dacName  = "MyApplication"  
  
## Generate the upgrade script and save to file.  
$dacstore.GetIncrementalUpgradeScript($dacName, $dacType) | Out-File -Filepath C:\DACScripts\MyApplicationUpgrade.sql  
  
## Close the filestream to the new DAC package.  
$fileStream.Close()  

Compare DACsCompare DACs

Vor dem Aktualisieren einer DAC empfiehlt es sich, die Unterschiede in der Datenbank und in den Objekten auf Instanzebene zwischen der aktuellen und der neuen DAC zu vergleichen.Before upgrading a DAC, it is a good practice to review the differences in the database and instance-level objects between the current and new DACs. Wenn Sie über keine Kopie des Pakets für die aktuelle DAC verfügen, können Sie ein Paket aus der aktuellen Datenbank extrahieren.If you do not have a copy of the package for the current DAC, you can extract a package from the current database.

Wenn Sie beide DAC-Pakete in DAC-Projekte in SQL Server Developer Tools importieren, können Sie das Tool "Schemavergleich" verwenden, um die Unterschiede zwischen den beiden DACs zu analysieren.If you import both DAC packages into DAC projects in SQL Server Developer Tools, you can use the Schema Compare tool to analyze the differences between the two DACs.

Entpacken Sie alternativ die DACs in separate Ordner.Alternatively, unpack the DACs into separate folders. Anschließend können Sie die Unterschiede mit einem Vergleichstool wie dem Hilfsprogramm "WinDiff" analysieren.You can then use a difference tool, such as the WinDiff utility, to analyze the differences.

Weitere InformationenSee Also

Datenebenenanwendungen Data-tier Applications
Bereitstellen einer Datenebenenanwendung Deploy a Data-tier Application
Upgrade einer DatenebenenanwendungUpgrade a Data-tier Application