Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel hilft Ihnen bei der Problembehandlung und Behebung eines Problems, bei dem beim Ausführen von Datenbankupgradeskripts ein kumulatives Update (CU) oder Service Pack (SP) für SQL Server Den Fehler 574 meldet.
Problembeschreibung
Wenn Sie ein CU oder SP anwenden, meldet das Setupprogramm möglicherweise den folgenden Fehler:
Fehler beim Warten auf das Wiederherstellungshandle der Datenbank-Engine. Mögliche Ursachen finden Sie im SQL Server-Fehlerprotokoll.
Wenn Sie das SQL Server-Fehlerprotokoll überprüfen, werden möglicherweise die folgenden Fehlermeldungen angezeigt:
Error: 574, Severity: 16, State: 0.
CONFIG statement cannot be used inside a user transaction.
Error: 912, Severity: 21, State: 2.
Script level upgrade for database 'master' failed because upgrade step 'sqlagent100_msdb_upgrade.sql' encountered error 574, state 0, severity 16.
This is a serious error condition which might interfere with regular operation and the database will be taken offline.
If the error happened during upgrade of the 'master' database, it will prevent the entire SQL Server instance from starting.
Examine the previous errorlog entries for errors, take the appropriate corrective actions and re-start the database so that the script upgrade steps run to completion.
Error: 3417, Severity: 21, State: 3.
Script level upgrade for database 'master' failed because upgrade step 'msdb110_upgrade.sql' encountered error 15173, state 1, severity 16
Ursache
Der Updatevorgang kann einige Upgradeskripts innerhalb einer Transaktion ausführen. Diese Updateskripts sind mit einer Annahme konzipiert, dass Benutzer keine Änderungen an Systemobjekten und zugehörigen Berechtigungen vornehmen. Wenn Sie versehentlich Änderungen an Systemobjekten oder Berechtigungen vornehmen, können einige dieser Skripts fehlschlagen, und die zugeordnete Transaktion wird möglicherweise verwaist und bleibt geöffnet. Wenn das Setupprogramm später ein Upgradeskript ausführt, das zum Festlegen einiger Konfigurationswerte verwendet sp_configure wird, tritt fehler 574 auf. Die tatsächliche Ursache des Setupfehlers sollte durch Überprüfen von Einträgen bestimmt werden, die vor Fehler 574 protokolliert werden.
Ein Skript wie der folgende kann beispielsweise zu Fehler 574 führen:
BEGIN TRAN
USE MASTER;
GO
EXEC sp_configure 'recovery interval', '4';
RECONFIGURE WITH OVERRIDE;
COMMIT TRAN
Lösung
Führen Sie die folgenden Schritte aus, um das Problem zu beheben:
Starten Sie SQL Server mit Ablaufverfolgungskennzeichnung 902. Weitere Informationen finden Sie in den Schritten zum Starten von SQL Server mit Ablaufverfolgungskennzeichnung 902.
Öffnen Sie das SQL Server-Fehlerprotokoll, und überprüfen Sie die Meldungen vor Fehler 574, um die fehlgeschlagene Transaktion zu identifizieren (siehe das folgende Beispielmuster).
Beheben Sie die fehlgeschlagene Transaktion gemäß den Informationen im Abschnitt "Potenzielle Ursachen und Lösungen ".
Entfernen Sie das Ablaufverfolgungskennzeichnung 902 aus dem Element " Startparameter ", und starten Sie SQL Server neu.
Sobald SQL Server ohne Ablaufverfolgungskennzeichnung 902 gestartet wird, wird das Upgradeskript erneut ausgeführt.
- Wenn das SP/CU-Upgradeskript erfolgreich abgeschlossen ist, können Sie das SQL Server-Fehlerprotokoll und den Bootstrap-Ordner überprüfen, um dies zu überprüfen.
- Wenn das Upgradeskript erneut fehlschlägt, überprüfen Sie das SQL Server-Fehlerprotokoll auf andere Fehler, und beheben Sie die neuen Fehler.
Beispielmuster: Probleme beim Erteilen von Berechtigungen für die Systemrolle
2020-08-17 09:38:12.09 spid11s Adding user 'hostname\svc_sqlagent' to SQLAgentUserRole msdb role...
2020-08-17 09:38:12.09 spid11s
2020-08-17 09:38:12.09 spid11s Granting login access'##MS_SSISServerCleanupJobLogin##' to msdb database...
2020-08-17 09:38:12.10 spid11s A problem was encountered granting access to MSDB database for login '(null)'. Make sure this login is provisioned with SQLServer and rerun sqlagent_msdb_upgrade.sql
2020-08-17 09:38:12.10 spid11s A problem was encountered granting access to MSDB database for login '(null)'. Make sure this login is provisioned with SQLServer and rerun sqlagent_msdb_upgrade.sql
2020-08-17 09:38:12.10 spid11s
2020-08-17 09:38:12.10 spid11s Adding user '##MS_SSISServerCleanupJobLogin##' to SQLAgentUserRole msdb role...
Mögliche Ursachen und Lösungen
Benutzeroptionen führen dazu, dass Transaktionen fehlschlagen.
Lösung: Stellen Sie eine Verbindung mit SQL Server her, verwenden Sie die Dokumentation zur Serverkonfigurationsoption für Benutzeroptionen , um Optionen zu identifizieren, die das Problem verursachen können, und entfernen Sie die Konflikteinstellung.
Der Microsoft-Support hat beispielsweise Instanzen gesehen, in denen die Einstellung für IMPLICIT_TRANSACTIONS bewirkt, dass das Setup fehlschlägt. Wenn Sie die konfliktierende Benutzeroption nicht identifizieren können, entfernen Sie alternativ alle Benutzeroptionen mithilfe des folgenden Skripts in SQL Server Management Studio (SSMS):
EXEC sp_configure 'user options', '0' GO RECONFIGURE WITH OVERRIDE; GOVerwaiste Benutzer führen dazu, dass Transaktionen fehlschlagen.
Lösung: Überprüfen Sie verwaiste Benutzer mithilfe einer Abfrage wie der folgenden:
SELECT dp.type_desc, dp.SID, dp.name AS user_name FROM sys.database_principals AS dp LEFT JOIN sys.server_principals AS sp ON dp.SID = sp.SID WHERE sp.SID IS NULL AND authentication_type_desc = 'INSTANCE';Weitere Informationen zum Auflösen verwaister Benutzer finden Sie unter Problembehandlung für verwaiste Benutzer (SQL Server).
Verwaiste Aufträge führen dazu, dass Transaktionen fehlschlagen.
Lösung: Suchen Sie mithilfe einer Abfrage wie der folgenden nach verwaisten Aufträgen:
SELECT sj.name AS Job_Name, sl.name AS Job_Owner FROM msdb.dbo.sysjobs_view sj LEFT JOIN master.dbo.syslogins sl ON sj.owner_sid = sl.sid WHERE sl.name <> 'sa' ORDER BY sj.nameJeder Datensatz, der hier einen NULL-Wert anzeigt, gibt an, dass der Besitzer des entsprechenden Agentauftrags verwaist ist. Bearbeiten Sie den Auftrag, und ändern Sie den Besitzer in eine gültige Anmeldung.