Upgrade einer Datenebenenanwendung

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

Verwenden Sie entweder den Assistenten zum Aktualisieren von Datenebenenanwendungen oder ein Windows PowerShell-Skript, um das Schema und die Eigenschaften einer derzeit bereitgestellten Datenebenenanwendung (DAC) so zu ändern, dass sie mit dem Schema und den Eigenschaften übereinstimmt, die in einer neuen Version der DAC definiert sind.

Vorbereitungen

Eine DAC-Aktualisierung ist ein direkter Prozess, mit dem das Schema der vorhandenen Datenbank so geändert wird, dass es dem in einer neuen Version der DAC definierten Schema entspricht. Die neue Version der DAC wird in einer DAC-Paketdatei bereitgestellt. Weitere Informationen zum Erstellen eines DAC-Pakets finden Sie unter Datenebenenanwendungen.

Auswählen von DAC-Upgradeoptionen

Für eine parallele Aktualisierung stehen vier Aktualisierungsoptionen zur Verfügung:

  • Datenverlust ignorieren – Bei "True" wird das Upgrade fortgesetzt, auch wenn einige Vorgänge zu Datenverlusten führen. Wenn False, beenden diese Vorgänge das Upgrade. Wenn beispielsweise eine Tabelle in der aktuellen Datenbank nicht im Schema des neuen DAC vorhanden ist, wird die Tabelle gelöscht, wenn True angegeben wird. Die Standardeinstellung ist True.

  • Änderungen blockieren – Wenn true, wird das Upgrade beendet, wenn sich das Datenbankschema von dem im vorherigen DAC definierten unterscheidet. Wenn auf Falsefestgelegt, wird die Aktualisierung auch dann fortgesetzt, wenn Änderungen erkannt werden. Die Standardeinstellung ist False.

  • Rollback beim Fehler – Wenn true, wird das Upgrade in eine Transaktion eingeschlossen. Wenn Fehler auftreten, wird ein Rollback versucht. Wenn False, werden alle Änderungen bei der Erstellung übernommen, und wenn Fehler auftreten, müssen Sie möglicherweise eine vorherige Datenbanksicherung wiederherstellen. Die Standardeinstellung ist False.

  • Richtlinienüberprüfung überspringen – Wenn true, wird die DAC-Serverauswahlrichtlinie nicht ausgewertet. Wenn False, wird die Richtlinie ausgewertet, und das Upgrade wird beendet, wenn ein Überprüfungsfehler auftritt. Die Standardeinstellung ist False.

Einschränkungen

DAC-Upgrades können nur in SQL-Datenbank oder SQL Server 2005 (9.x) Service Pack 4 (SP4) oder höher ausgeführt werden.

Voraussetzungen

Es ist umsichtig, vor dem Starten des Upgrades eine vollständige Datenbanksicherung zu erstellen. Möglicherweise müssen Sie die Sicherung wiederherstellen, wenn bei einem Upgrade ein Fehler auftritt und kein Rollback aller Änderungen möglich ist.

Bevor Sie das Upgrade starten, gibt es mehrere Aktionen, die Sie ausführen sollten, um das DAC-Paket und die Upgradeaktionen zu überprüfen. Weitere Informationen zum Ausführen dieser Tests finden Sie unter Validate a DAC Package.

  • Es wird empfohlen, das Upgrade mit einem DAC-Paket von unbekannten oder nicht vertrauenswürdigen Quellen abzuhalten. Solche Pakete können schädlichen Code enthalten, der möglicherweise unbeabsichtigten Transact-SQL-Code ausführt oder Fehler verursacht, indem er das Schema ändert. Bevor Sie ein Paket aus einer unbekannten oder nicht vertrauenswürdigen Quelle verwenden, entpacken Sie die DAC, und untersuchen Sie den Code, z. B. gespeicherte Prozeduren oder sonstigen benutzerdefinierten Code.

  • Wenn Änderungen an der aktuellen Datenbank vorgenommen wurden, nachdem die letzte Version des DAC bereitgestellt wurde, können einige der Änderungen den erfolgreichen Abschluss des Upgrades verhindern oder durch das Upgrade entfernt werden. Sie müssen zuerst einen Bericht mit solchen an der Datenbank vorgenommenen Änderungen generieren.

  • Es ist umsichtig, eine Liste der Schemaänderungen zu generieren, die das Upgrade ausführt und die Liste auf alle Probleme überprüft.

Der Anwendungsname im DAC-Paket muss mit dem Anwendungsnamen der gerade bereitgestellten DAC übereinstimmen. Wenn der aktuelle DAC beispielsweise über einen Anwendungsnamen von GeneralLedger verfügt, können Sie nur ein Upgrade durchführen, indem Sie ein DAC-Paket mit dem Anwendungsnamen GeneralLedger verwenden.

Stellen Sie sicher, dass genügend Transaktionsprotokollspeicher verfügbar ist, um alle Änderungen zu protokollieren.

Sicherheit

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 Anmeldungen zu aktivieren, melden Sie sich mit einer Anmeldung mit ALTER ANY LOGIN-Berechtigung an und verwenden ALTER LOGIN, um die Anmeldung zu aktivieren und dem Benutzer ein neues Kennwort zuzuweisen. Dies ist für Windows-Authentifizierungsanmeldungen nicht erforderlich, da SQL Server ihre Kennwörter nicht verwaltet.

Berechtigungen

Die Aktualisierung einer DAC kann nur von Mitgliedern der festen Serverrollen sysadmin oder serveradmin durchgeführt werden bzw. unter Verwendung von Anmeldenamen aus der festen Serverrolle dbcreator , die über ALTER ANY-LOGIN-Berechtigungen verfügen. Die Anmeldung muss als Besitzer der vorhandenen Datenbank erfolgen. Das integrierte SQL Server-Systemadministratorkonto " sa " kann auch ein Upgrade eines DAC durchführen.

Verwenden des Assistenten zum Aktualisieren von Datenebenen-Anwendungen

So aktualisieren Sie eine DAC mithilfe eines Assistenten

  1. Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf die Datenbank, die den zu aktualisierenden DAC enthält.

  2. Erweitern Sie die Option "Aufgaben ", und wählen Sie dann die Option "Datenebenenanwendungen aktualisieren" aus.

  3. Bearbeiten Sie die Dialogfenster des Assistenten:

    1. Seite "Einführung"

    2. Seite "Paket auswählen"

    3. Seite "Änderung erkennen"

    4. Optionsseite

    5. Upgradeplan überprüfen

    6. Seite "Zusammenfassung"

    7. Seite "DAC aktualisieren"

Seite "Einführung"

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

Diese Seite nicht mehr anzeigen. - Aktivieren Sie das Kontrollkästchen, um zu verhindern, dass die Seite in Zukunft angezeigt wird.

Weiter > – Fahren Sie mit der Seite "Paket auswählen" fort.

Abbrechen : Beendet den Assistenten, ohne die DAC zu aktualisieren.

Seite "Paket auswählen"

Verwenden Sie diese Seite, um das DAC-Paket anzugeben, das die neue Version der Datenebenenanwendung enthält. Die Seite durchläuft zwei Statusübergänge.

Auswählen des DAC-Pakets

Verwenden Sie die Seite in ihrem Ausgangszustand, um das bereitzustellende DAC-Paket auszuwählen. Das DAC-Paket muss eine gültige DAC-Paketdatei sein und die Erweiterung .dacpac aufweisen. Der DAC-Anwendungsname im DAC-Paket muss dem Anwendungsnamen der aktuellen DAC entsprechen.

DAC-Paket : Geben Sie den Pfad und Dateinamen des DAC-Pakets an, das die neue Version der 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-Anwendungsnamen, 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.

< Zurück – Kehrt zur Seite Einführung über.

Als Nächstes > – Zeigt eine Statusleiste an, wenn der Assistent bestätigt, dass die ausgewählte Datei ein gültiges DAC-Paket ist.

Abbrechen : Beendet den Assistenten, ohne die DAC zu aktualisieren.

Ü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. Der Assistent fährt mit der Seite " Richtlinie überprüfen" fort, wenn das DAC-Paket überprüft wird. Wenn die Datei kein gültiges DAC-Paket ist, verbleibt der Assistent auf der Seite "DAC-Paket auswählen" . Wählen Sie entweder ein anderes gültiges DAC-Paket aus, oder brechen Sie den Assistenten ab, und generieren Sie ein neues DAC-Paket.

Der DAC-Inhalt wird überprüft: Die Statusanzeige, die den aktuellen Status des Überprüfungsprozesses angibt.

< Zurück – Gibt zum Anfangszustand der Seite "Paket auswählen" zurück.

Weiter > – Fahren Sie mit der endgültigen Version der Seite "Paket auswählen" fort.

Abbrechen : Beendet den Assistenten, ohne die DAC bereitzustellen.

Seite "Änderung erkennen"

Verwenden Sie diese Seite, um die Ergebnisse der Überprüfung des Assistenten auf Änderungen zu melden, die an der Datenbank vorgenommen wurden, die ihr Schema von der schemadefinition unterscheiden, die in den DAC-Metadaten msdbin . Beispielsweise wurden die Anweisungen CREATE, ALTER oder DROP verwendet, um Objekte nach der ursprünglichen Bereitstellung der DAC zur Datenbank hinzuzufügen, Objekte zu ändern oder zu entfernen. Die Seite zeigt zuerst eine Statusanzeige an und meldet dann die Analyseergebnisse.

Änderung wird ermittelt. Dieser Vorgang kann einige Minuten dauern : Zeigt eine Statusanzeige an, während der Assistent Unterschiede zwischen dem aktuellen Schema der Datenbank und den Objekten in der DAC-Definition sucht.

Änderungserkennungsergebnisse: – Gibt an, dass die Analyse abgeschlossen wurde und die Ergebnisse unten gemeldet werden.

Die DatabaseName-Datenbank wurde nicht geändert : Der Assistent hat keine Unterschiede zwischen den in der Datenbank definierten Objekten und ihren Äquivalenten in der DAC-Definition festgestellt.

Die DatabaseName-Datenbank wurde geändert : Der Assistent hat Unterschiede zwischen den Objekten in der Datenbank und ihren Äquivalenten in der DAC-Definition festgestellt.

Gehen Sie trotz möglicher Änderungen fort – Gibt an, dass Sie einige der Objekte oder Daten in der aktuellen Datenbank nicht in der neuen Datenbank vorhanden sind und dass Sie bereit sind, mit dem Upgrade fortzufahren. Sie sollten diese Schaltfläche nur aktivieren, wenn Sie den Änderungsbericht überprüft und verstanden haben, welche Schritte erforderlich sind, um Objekte oder Daten, die in der neuen Datenbank erforderlich sind, manuell zu übertragen. Wenn Sie nicht sicher sind, wählen Sie die Schaltfläche "Bericht speichern" aus, um den Änderungsbericht zu speichern, und wählen Sie dann "Abbrechen" aus. Analysieren Sie den Bericht, planen Sie die Übertragung erforderlicher Objekte und Daten nach dem Upgrade, und starten Sie den Assistenten erneut.

Bericht speichern – Wählen Sie die Schaltfläche aus, um einen Bericht der Änderungen zu speichern, die der Assistent zwischen den Objekten in der Datenbank und ihren Gegenstücken in der DAC-Definition erkannt hat. Anschließend können Sie den Bericht überprüfen, um festzustellen, ob Nach Abschluss des Upgrades einige oder alle im Bericht aufgeführten Objekte in die neue Datenbank einbezogen werden müssen.

< Zurück – Kehrt zur Seite "DAC-Paket auswählen" zurück.

Weiter > – Fahren Sie mit der Seite "Optionen" fort.

Abbrechen : Beendet den Assistenten, ohne die DAC bereitzustellen.

Seite "Optionen"

Verwenden Sie diese Seite, um das Rollback bei Fehlern für die Aktualisierung auszuwählen.

Rollback beim Fehler – Wählen Sie diese Option aus, um das Upgrade in eine Transaktion einzuschließen, die der Assistent versuchen kann, ein Rollback durchzuführen, wenn Fehler auftreten. Weitere Informationen zu dieser Option finden Sie unter Auswählen von DAC-Aktualisierungsoptionen.

Standardwerte wiederherstellen: Setzt die Option auf die Standardeinstellung „false“ zurück.

< Zurück – Kehrt zur Seite " Änderung erkennen" zurück.

Weiter > – Fahren Sie mit der Seite "Upgradeplan überprüfen" fort.

Abbrechen : Beendet den Assistenten, ohne die DAC bereitzustellen.

Seite "Upgradeplan überprüfen"

Verwenden Sie diese Seite, um die Aktionen zu überprüfen, die der Upgradevorgang ausführt. Fahren Sie nur fort, wenn Sie sicher sind, dass das Upgrade keine Probleme erzeugt.

Die folgenden Aktionen werden zum Aktualisieren der DAC verwendet. – Überprüfen Sie die angezeigten Informationen darauf, ob die ergriffenen Maßnahmen richtig sind. In der Spalte Aktion werden die Aktionen angezeigt, die für die Aktualisierung ausgeführt werden, z.B. Transact-SQL-Anweisungen. Die Spalte Datenverlust enthält eine Warnung, wenn durch die zugeordnete Aktion Daten gelöscht werden könnten.

Aktualisieren: Aktualisiert die Liste der Aktionen.

Aktionsbericht speichern: Speichert den Inhalt des Aktionsfensters in einer HTML-Datei.

Gehen Sie trotz möglicher Änderungen fort – Gibt an, dass Sie einige der Objekte oder Daten in der aktuellen Datenbank nicht in der neuen Datenbank vorhanden sind und dass Sie bereit sind, mit dem Upgrade fortzufahren. Sie sollten diese Schaltfläche nur aktivieren, wenn Sie den Änderungsbericht überprüft und verstanden haben, welche Schritte erforderlich sind, um Objekte oder Daten, die in der neuen Datenbank erforderlich sind, manuell zu übertragen. Wenn Sie sich nicht sicher sind, wählen Sie die Schaltfläche "Aktionsbericht speichern" aus, um den Änderungsbericht zu speichern, und klicken Sie auf die Schaltfläche "Skript speichern", um das Transact-SQL-Skript zu speichern, und wählen Sie dann "Abbrechen" aus. Analysieren Sie den Bericht und das Skript, planen Sie, wie alle erforderlichen Objekte und Daten nach Abschluss des Upgrades übertragen werden, und starten Sie dann den Assistenten neu.

Skripts speichern: Speichert die für das Upgrade verwendeten Transact-SQL-Anweisungen in einer Textdatei.

Standardwerte wiederherstellen: Setzt die Option auf die Standardeinstellung „false“ zurück.

< Zurück – Kehrt zur Seite " Änderung erkennen" zurück.

Weiter > – Fahren Sie mit der Zusammenfassungsseite fort.

Abbrechen : Beendet den Assistenten, ohne die DAC bereitzustellen.

Seite "Zusammenfassung"

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

Die folgenden Einstellungen werden zum Aktualisieren der DAC verwendet. – Überprüfen Sie die angezeigten Informationen darauf, ob die ergriffenen Maßnahmen richtig sind. Das Fenster zeigt die zur Aktualisierung ausgewählte DAC und das DAC-Paket an, das die neue Version der DAC enthält. Das Fenster zeigt auch an, ob die aktuelle Datenbankversion mit der aktuellen DAC-Definition identisch ist oder ob sich die Datenbank geändert hat.

< Zurück – Gibt Sie zur Seite "Upgradeplan überprüfen" zurück.

Als Nächstes > – Stellt den DAC bereit und zeigt die Ergebnisse auf der Seite "Upgrade DAC " an.

Abbrechen : Beendet den Assistenten, ohne die DAC bereitzustellen.

Seite "DAC aktualisieren"

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

DAC wird aktualisiert : Gibt an, ob die Aktionen zur Aktualisierung der DAC erfolgreich oder fehlerhaft waren. Überprüfen Sie die Informationen, um zu bestimmen, ob die einzelnen Aktionen erfolgreich waren oder fehlgeschlagen sind. Jede Aktion, bei der ein Fehler aufgetreten ist, weist einen Link in der Spalte "Ergebnis " auf. 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 Aktualisierungsbericht 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 ein Ordner "SQL Server Management Studio\DAC Packages" im Ordner "Dokumente" unter Ihrem Windows-Konto.

Fertig stellen – Beendet den Assistenten.

Nutzen von PowerShell

Aktualisieren einer DAC mithilfe der IncrementalUpgrade()-Methode in einem PowerShell-Skript

  1. Erstellen Sie ein SMO Server-Objekt, und legen Sie es auf die Instanz fest, die den zu aktualisierenden DAC enthält.

  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-Aktualisierungsereignisse zu abonnieren.

  5. Legen Sie die DacUpgradeOptionsfest.

  6. Verwenden Sie die IncrementalUpgrade -Methode zum Aktualisieren der DAC.

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

Beispiel (PowerShell)

Im folgenden Beispiel wird ein DAC mit dem Namen "MyApplication" auf eine Standardinstanz des Datenbankmoduls mit einer neuen DAC-Version in einem MyApplication2017.dacpac-Paket aktualisiert.

## Set an 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)
  
## Subscribe to the DAC upgrade events.
$dacstore.add_DacActionStarted({Write-Host `n`nStarting at $(get-date) :: $_.Description})
$dacstore.add_DacActionFinished({Write-Host Completed at $(get-date) :: $_.Description})
  
## Upgrade the DAC and close the package.
$dacName  = "MyApplication"
  
## Set the upgrade options.
$upgradeProperties = New-Object Microsoft.SqlServer.Management.Dac.DacUpgradeOptions
$upgradeProperties.blockonchanges = $true
$upgradeProperties.ignoredataloss = $false
$upgradeProperties.rollbackonfailure = $true
$ upgradeProperties.skippolicyvalidation = $false
  
## Upgrade the DAC
$dacstore.IncrementalUpgrade($dacName, $dacType, $upgradeProperties)
## Close the package file.
$fileStream.Close()

Siehe auch