Upgrade einer Datenebenenanwendung
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance SQL-Datenbank in Microsoft Fabric
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: Auswählen von DAC-Aktualisierungsoptionen, Einschränkungen, Voraussetzungen, Sicherheit, Berechtigungen
Aktualisieren einer DAC mit: Assistent zum Aktualisieren von Datenschichtanwendung, PowerShell
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-Aktualisierungsoptionen
Für eine parallele Aktualisierung stehen vier Aktualisierungsoptionen zur Verfügung:
Datenverlust ignorieren: Wenn True, wird das Upgrade auch dann fortgesetzt, wenn einige Operationen zu Datenverlust führen. Wenn auf False festgelegt, wird bei solchen Vorgängen die Aktualisierung beendet. Wenn beispielsweise eine Tabelle in der aktuellen Datenbank im Schema der neuen DAC nicht vorhanden ist, wird die Tabelle gelöscht, wenn True festgelegt ist. Die Standardeinstellung ist True.
Bei Änderungen blockieren: Wenn TRUE, wird die Aktualisierung beendet, wenn sich das Datenbankschema von dem in der vorherigen DAC definierten Schema unterscheidet. Wenn auf Falsefestgelegt, wird die Aktualisierung auch dann fortgesetzt, wenn Änderungen erkannt werden. Die Standardeinstellung ist False.
Rollback bei Fehler: Wenn TRUE, wird die Aktualisierung in eine Transaktion eingeschlossen; wenn Fehler auftreten, wird ein Rollback versucht. Wenn auf False festgelegt, wird für alle Änderungen bei ihrer Erstellung ein Commit ausgeführt, und wenn Fehler auftreten, müssen Sie möglicherweise aus einer vorherigen Datenbanksicherung wiederherstellen. Die Standardeinstellung ist False.
Richtlinienüberprüfung überspringen: Wenn TRUE, wird die DAC-Richtlinie zur Serverauswahl nicht überprüft. Wenn auf False festgelegt, wird die Richtlinie ausgewertet, und im Fall eines Fehlers wird die Aktualisierung beendet. 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
Vor dem Beginn der Aktualisierung muss eine vollständige Datenbanksicherung durchgeführt werden. Sie müssen die Sicherung eventuell wiederherstellen, wenn bei einer Aktualisierung ein Fehler auftritt und kein Rollback für alle Aktualisierungen ausgeführt werden kann.
Vor dem Starten der Aktualisierung gibt es mehrere Aktionen, die Sie durchführen sollten, um das DAC-Paket und die Aktualisierungsaktionen zu validieren. Weitere Informationen zum Ausführen dieser Tests finden Sie unter Validate a DAC Package.
Wir empfehlen, dass Sie von einem Upgrade mit einem DAC-Paket aus unbekannten oder nicht vertrauenswürdigen Quellen absehen. 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 nach der Bereitstellung der letzten Version der DAC Änderungen an der aktuellen Datenbank vorgenommen wurden, verhindern einige Änderungen möglicherweise den erfolgreichen Abschluss der Aktualisierung, oder sie werden durch die Aktualisierung entfernt. Sie müssen zuerst einen Bericht mit solchen an der Datenbank vorgenommenen Änderungen generieren.
Es ist unerlässlich, eine Liste der Änderungen des Schemas zu generieren, die bei der Aktualisierung durchgeführt werden, und diese auf mögliche Probleme zu überprüfen.
Der Anwendungsname im DAC-Paket muss mit dem Anwendungsnamen der gerade bereitgestellten DAC übereinstimmen. Wenn die aktuelle DAC z. B. den Anwendungsnamen GeneralLedger hat, können Sie die Aktualisierung nur mithilfe eines DAC-Pakets mit Anwendungsnamen GeneralLedger ausführen.
Stellen Sie sicher, dass im Transaktionsprotokoll ausreichend Speicherplatz 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 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 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. Außerdem kann das integrierte SQL Server-Systemadministratorkonto mit der Bezeichnung sa zum Upgraden einer DAC verwendet werden. .
Verwenden des Assistenten zum Upgraden von Datenschichtanwendungen
So aktualisieren Sie eine DAC mithilfe eines Assistenten
Klicken Sie in Objekt-Explorer mit der rechten Maustaste auf die Datenbank mit dem zu aktualisierenden DAC.
Erweitern Sie die Option Aufgaben, und wählen Sie dann die Option Datenschichtanwendung upgraden aus.
Bearbeiten Sie die Dialogfenster des Assistenten:
Seite "Einführung"
Auf dieser Seite werden die Schritte zum Aktualisieren einer Datenebenenanwendung beschrieben.
Diese Seite nicht mehr anzeigen. – Aktivieren Sie dieses Kontrollkästchen, damit die Seite in Zukunft nicht mehr angezeigt wird.
Weiter > - Geht zur Seite Paket auswählen über.
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 Datenschichtanwendung 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.
Weiter > - Zeigt eine Statusanzeige an, da der Assistent bestätigt, dass es sich bei der ausgewählten Datei um ein gültiges DAC-Paket handelt.
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 geht zur Seite Richtlinie überprüfen über, 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 - Kehrt zum Ausgangszustand der Seite Paket auswählen zurück.
Weiter > - Geht zur abschließenden Version der Seite Paket auswählen über.
Abbrechen : Beendet den Assistenten, ohne die DAC bereitzustellen.
Seite "Änderung erkennen"
Verwenden Sie diese Seite, um die Ergebnisse der Prüfung des Assistenten auf Änderungen an der Datenbank zu melden, die dazu führen, dass sich das Schema von der Schemadefinition unterscheidet, die in den DAC-Metadaten in msdb
gespeichert ist. 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. Auf der Seite werden zuerst eine Statusanzeige, dann die Berichte der Analyseergebnisse angezeigt.
Ä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.
Erkennungsergebnisse ändern: - Gibt an, dass die Analyse abgeschlossen wurde. Die Ergebnisse werden darunter angezeigt.
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.
Vorgang fortsetzen, obwohl Änderungen verloren gehen können : Sie wurden informiert, dass einige der Objekte oder Daten in der aktuellen Datenbank nicht in der neuen Datenbank vorhanden sein werden, möchten die Aktualisierung aber dennoch fortsetzen. 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, um den Änderungsbericht zu speichern, und wählen Sie dann Abbrechen. 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 en Sie auf die Schaltfläche, um einen Bericht der Änderungen zu speichern, die der Assistent zwischen den Objekten in der Datenbank und ihren Äquivalenten in der DAC-Definition festgestellt hat. Sie können dann den Bericht überprüfen, um zu bestimmen, ob Sie nach dem Upgrade Maßnahmen ergreifen müssen, um einige oder alle im Bericht aufgeführten Objekte in die neue Datenbank zu integrieren.
< Zurück - Kehrt zur Seite DAC-Paket auswählen zurück.
Weiter > - Geht zur Seite Optionen über.
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 bei Fehler: Wählen Sie diese Option aus, um das Upgrade in eine Transaktion einzuschließen. Der Assistent kann beim Auftreten von Fehlern dann versuchen, ein Rollback durchzuführen. 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: Geht zur Seite Änderung erkennen zurück.
Weiter > - Geht zur Seite Upgradeplan überprüfen über.
Abbrechen : Beendet den Assistenten, ohne die DAC bereitzustellen.
Seite "Upgradeplan überprüfen"
Verwenden Sie diese Seite, um die Aktionen zu überprüfen, die der Prozess Aktualisieren ausführt. Fahren Sie nur dann fort, wenn Sie sicher sind, dass durch die Aktualisierung keine Probleme verursacht werden.
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.
Vorgang fortsetzen, obwohl Änderungen verloren gehen können : Sie wurden informiert, dass einige der Objekte oder Daten in der aktuellen Datenbank nicht in der neuen Datenbank vorhanden sein werden, möchten die Aktualisierung aber dennoch fortsetzen. 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 Aktionsbericht speichern , um den Änderungsbericht zu speichern. Klicken Sie auf die Schaltfläche Skripts speichern , um das Transact-SQL-Skript zu speichern, und wählen Sie dann Abbrechen. Analysieren Sie den Bericht und das Skript, planen Sie die Übertragung erforderlicher Objekte und Daten nach der Aktualisierung, und starten Sie den Assistenten erneut.
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: Geht zur Seite Änderung erkennen zurück.
Weiter >: Geht zur Seite Zusammenfassung über.
Abbrechen : Beendet den Assistenten, ohne die DAC bereitzustellen.
Seite "Zusammenfassung"
Verwenden Sie diese Seite, um die Aktionen zu überprüfen, die der Assistent beim Aktualisieren der 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. Im Fenster wird außerdem angezeigt, ob die aktuelle Datenbankversion der aktuellen DAC-Definition entspricht oder ob die Datenbank geändert wurde.
< Zurück - Geht zur Seite Upgradeplan überprüfen zurück.
Weiter > - Stellt die DAC bereit und zeigt die Ergebnisse auf der Seite DAC aktualisieren 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. 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 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.
Verwenden von PowerShell
Aktualisieren einer DAC mithilfe der IncrementalUpgrade()-Methode in einem PowerShell-Skript
Erstellen Sie ein SMO-Serverobjekt, und legen Sie es auf die Instanz fest, die die zu aktualisierende DAC enthält.
Öffnen Sie ein ServerConnection -Objekt, und stellen Sie eine Verbindung mit derselben Instanz her.
Laden Sie die DAC-Paketdatei mithilfe von System.IO.File .
Verwenden Sie add_DacActionStarted und add_DacActionFinished , um die DAC-Aktualisierungsereignisse zu abonnieren.
Legen Sie die DacUpgradeOptionsfest.
Verwenden Sie die IncrementalUpgrade -Methode zum Aktualisieren der DAC.
Schließen Sie den Dateidatenstrom, der zum Lesen der DAC-Paketdatei verwendet wurde.
Beispiel (PowerShell)
Im folgenden Beispiel wird eine DAC mit dem Namen „MyApplication“ auf einer Standardinstanz der Datenbank-Engine aktualisiert, wobei eine neue DAC-Version in einem „MyApplication2017.dacpac“-Paket verwendet wird.
## 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()