次の方法で共有


SQL Server のアップグレードが失敗し、エラー 6528 が返される

この記事は、Microsoft SQL Server 用の累積的な更新プログラム (CU) またはサービス パック (SP) をインストールするときに発生するエラー 6528 のトラブルシューティングと解決に役立ちます。 このエラーは、データベース アップグレード スクリプトが実行されるときに発生します。

現象

SQL Server に CU または SP を適用すると、セットアップ プログラムによって SQL Server エラー ログに次のいずれかのエラー メッセージが報告されます。

SQL server failed in 'Script level upgrade' with the following error:
Error: 50000, Severity: 16, State: 127.
Cannot drop the assembly 'ISSERVER', because it does not exist or you do not have permission.
Error: 50000, Severity: 16, State: 127.
Cannot drop the assembly 'ISSERVER', because it does not exist or you do not have permission.

Creating function internal.is_valid_name
Error: 6528, Severity: 16, State: 1.
Assembly 'ISSERVER' was not found in the SQL catalog of database 'SSISDB'.

Error: 912, Severity: 21, State: 2.
Script level upgrade for database 'master' failed because upgrade step 'ISServer_upgrade.sql' encountered error 6528, state 1, 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 error log 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.
Cannot recover the master database. SQL Server is unable to run. 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.
SQL Server shutdown has been initiated.

原因

この問題は、CU を適用しようとした SQL Server インスタンスまたは SP にアセンブリ ISSERVERがないために発生する可能性があります。

CU または SP のインストール中に実行されるデータベース アップグレード スクリプトの詳細については、「 更新プログラムの適用時のアップグレード スクリプトのエラーを解決するを参照してください。

解決方法

問題を解決するには、次の手順に従います。

  1. trace フラグ 902 で SQL Server を起動します。

  2. 次のクエリを使用して、アセンブリ ISSERVER がデータベース SSISDB 内にあるかどうかを確認します。

    Use SSISDB
    GO
    SELECT * FROM sys.assemblies WHERE name = 'ISSERVER'
    

    または、SQL Server Management Studio (SSMS) で Databases>SSISDB>Programmability>Assemblies>ISSERVER を展開して確認することもできます。

  3. アセンブリ C:\Program Files\Microsoft SQL Server\<VersionNumber>\DTS\Bin の場所を調べて、アセンブリ Microsoft.SqlServer.IntegrationServices.Server.dll が SQL バイナリ フォルダーに存在するかどうかを確認します。

  4. アセンブリがそのフォルダーにあるが、 sys.assemblies ビューにエントリがない場合は、次のクエリを使用して再作成します。

    DECLARE @asm_bin varbinary(max);
    SELECT @asm_bin = BulkColumn
    FROM OPENROWSET (BULK N'C:\Program Files\Microsoft SQL Server\<VersionNumber>\DTS\Binn\Microsoft.SqlServer.IntegrationServices.Server.dll',SINGLE_BLOB) AS dll
    CREATE ASSEMBLY ISSERVER FROM  @asm_bin  WITH PERMISSION_SET = UNSAFE
    ALTER DATABASE SSISDB SET TRUSTWORTHY ON
    

    今回はアセンブリ ISSERVER が存在します。

  5. トレース フラグ 902 を削除し、サービスを開始します。