この記事では、データベース アップグレード スクリプトを実行するときに累積的な更新プログラム (CU) または Service Pack (SP) がエラー 2714 を報告する問題を解決します。
現象
CU または SP を適用すると、セットアップ プログラムで次のエラーが報告されることがあります。
データベース エンジンの復旧ハンドルの待機に失敗しました。 考えられる原因については、SQL Server エラー ログを確認してください
SQL Server エラー ログを確認すると、次のいずれかのエラー メッセージグループが表示されることがあります。
2021-07-27 14:08:44.31 spid6s Error: 2714, Severity: 16, State: 6.
2021-07-27 14:08:44.31 spid6s There is already an object named 'DatabaseMailUserRole' in the database.
2021-07-27 14:08:44.31 spid6s Error: 2759, Severity: 16, State: 0.
2021-07-27 14:08:44.31 spid6s CREATE SCHEMA failed due to previous errors.
2021-07-27 14:08:44.31 spid6s Error: 912, Severity: 21, State: 2.
2021-07-27 14:08:44.31 spid6s Script level upgrade for database 'master' failed because upgrade step 'msdb110_upgrade.sql' encountered error 2714, state 6, severity 25.
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.
2021-07-27 14:08:44.32 spid6s Error: 3417, Severity: 21, State: 3.
Restore master from a full backup, repair it, or rebuild it. For more information about how to rebuild the master database, see SQL Server Books Online.
2021-07-27 14:08:44.31 spid6s Error: 2714, Severity: 16, State: 6.
2021-07-27 14:08:44.31 spid6s There is already an object named 'TargetServersRole' in the database.
2021-07-27 14:08:44.31 spid6s Error: 912, Severity: 21, State: 2.
2021-07-27 14:08:44.31 spid6s Script level upgrade for database 'master' failed because upgrade step 'msdb110_upgrade.sql' encountered error 2714, state 6, severity 25.
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.
2021-07-27 14:08:44.32 spid6s Error: 3417, Severity: 21, State: 3.
Restore master from a full backup, repair it, or rebuild it. For more information about how to rebuild the master database, see SQL Server Books Online.
DatabaseMailUserRole スキーマに関するアップグレードの問題を解決する
次の情報を確認して、 DatabaseMailUserRole
に関連するアップグレードの問題を解決します。
原因
このエラーは、 msdb
データベースでシステム スキーマ、ユーザー、またはロールが正しく構成されていない場合に発生します。
また、アップグレード スクリプトがmsdb
データベースでDatabaseMailUserRole
スキーマの再作成に失敗した場合にも発生します。 この問題は、 DatabaseMailUserRole
スキーマが DatabaseMailUserRole
ロールによって所有されていない場合に発生する可能性があります(たとえば、スキーマが dbo
によって所有されている場合)。
CU または SP のインストール中に実行されるデータベース アップグレード スクリプトの詳細については、「 更新プログラムの適用時のアップグレード スクリプトエラーのトラブルシューティングを参照してください。
解決方法
T902 を使用して SQL Server を停止して再起動します。 たとえば、コマンド プロンプトから次のコマンドを実行できます。
既定のインスタンスの場合:
NET START MSSQLSERVER /T902
名前付きインスタンスの場合:
NET START MSSQL$INSTANCENAME /T902
msdb
データベースを予防措置としてバックアップします。BACKUP DATABASE msdb TO disk = '<backup folder>'
SQL Server Management Studio を開き、SQL Server インスタンスに接続し、
msdb
データベースのバックアップを作成します。Databases>System Databases>
msdb
>Security>Schemas>DatabaseMailuserRole を展開します。DatabaseMailUserRole
という名前のスキーマを削除します。SQL Server を停止し、トレース フラグ 902 なしで再起動します。
トレース フラグ 902 なしで SQL Server が起動すると、アップグレード スクリプトが再度実行され、
DatabaseMailUserRole
スキーマが再作成されます。- SP または CU のアップグレード スクリプトが正常に完了した場合は、SQL Server エラー ログとブートストラップ フォルダーを確認して確認します。
- アップグレード スクリプトが再度失敗した場合は、SQL Server エラー ログで他のエラーがないか確認し、新しいエラーのトラブルシューティングを行います。
TargetServersRole ロールに関するアップグレードの問題を解決する
次の情報を確認して、 TargetServersRole
に関連するアップグレードの問題を解決します。
原因
このエラーは、アップグレード スクリプトがmsdb
データベースでTargetServersRole
セキュリティ ロールを再作成できない場合に発生します。 このロールは、マルチサーバー環境で使用されます。 既定では、 TargetServersRole
セキュリティ ロールは dbo
によって所有され、ロールは TargetServersRole
スキーマを所有します。 誤ってこの関連付けを変更し、インストールする更新プログラムにこれらのロールの変更が含まれている場合、アップグレードが失敗し、エラー 2714: There is already an object named 'TargetServersRole' in the database
が返される可能性があります。 このエラーを解決するには、次の手順に従ってください。
解決方法
T902 を使用して SQL Server を停止して再起動します。
既定のインスタンスの場合:
NET START MSSQLSERVER /T902
名前付きインスタンスの場合:
NET START MSSQL$INSTANCENAME /T902
msdb
データベースを予防措置としてバックアップします。BACKUP DATABASE msdb TO disk = '<backup folder>'
現在、このロールの一部であるユーザーの一覧を作成します (ある場合)。 次のクエリを実行して、ロールのメンバーを一覧表示できます。
EXEC msdb.dbo.sp_helprolemember 'TargetServersRole'
次のステートメントを使用して、
TargetServersRole
ロールを削除します。EXEC msdb.dbo.sp_droprole @rolename = N'TargetServersRole'
問題が解決されたかどうかを確認するには、トレース フラグ
902
を使用せずに SQL Server インスタンスを再起動します。手順 3 のユーザーを
TargetServersRole
に再追加します。