タイトルの通りですが、インターネットに接続されていない、インストール直後の Windows 7 SP1 x64 に対して、SQL Server 2016 対応された最新の SSMS をインストールしようとした場合、少し癖がありましたので情報を。
Windows Update かけて最新化している場合は、発生しない気がしますが、素の Windows 7 SP1 だと発生するかと思います。
同様の情報として、 Windows 8/2012 以前のインターネット接続がない環境への SQL Server Management Studio のインストールが失敗する が公開されていますが、インストール直後の Windows 7 SP1 ですと、追加の手順が必要となります。
SSMS では、.NET Framework 4.5 が必要となりますので、これについては事前にインストールしておく必要があります。
今回は .NET Framework 4.5.1 のオフラインインストーラーでインストールしています。
# ぐぐったらすぐに出てきたオフラインインストーラーがこれだったので使っているのですが、4.5.2 でもいいかと。
Windows 7 SP1 + .NET Framework 4.5 の環境であれば SSMS のインストールを行うことができるのですが、進めると以下のような画面のエラーになるケースがあります。
「証明書チェーンを、信頼されたルート機関として構築できませんでした。 (0x800B010A)」というエラーになるのですが、これは、パッケージで使用されている証明書が Windows 7 SP1 のインストール直後の状態では含まれておらず、インターネット経由で取得しようとしても、経路がないために入手することができず、このようなエラーとなっています。
エラーログの内容としては以下のような出力となっています。
[0330:0BF8][2016-07-12T21:25:55]e000: Error 0x800b010a: Failed authenticode verification of payload: C:\ProgramData\Package Cache\.unverified\SqlSupport_x86 [0330:0BF8][2016-07-12T21:25:55]e000: Error 0x800b010a: Failed to verify signature of payload: SqlSupport_x86 [0330:0BF8][2016-07-12T21:25:55]e310: Failed to verify payload: SqlSupport_x86 at path: C:\ProgramData\Package Cache\.unverified\SqlSupport_x86, error: 0x800b010a. Deleting file. [0330:0BF8][2016-07-12T21:25:55]e000: Error 0x800b010a: Failed to cache payload: SqlSupport_x86 [080C:0614][2016-07-12T21:25:55]e314: Failed to cache payload: SqlSupport_x86 from working path: C:\Users\MASAYU~1.OZA\AppData\Local\Temp\{55b82ab1-373d-4526-96d2-01a9e8f1b0ab}\SqlSupport_x86, error: 0x800b010a. [080C:0614][2016-07-12T21:25:55]e349: Application requested retry of payload: SqlSupport_x86, encountered error: 0x800b010a. Retrying... [0330:0BF8][2016-07-12T21:25:57]e000: Error 0x800b010a: Failed authenticode verification of payload: C:\ProgramData\Package Cache\.unverified\SqlSupport_x86 [0330:0BF8][2016-07-12T21:25:57]e000: Error 0x800b010a: Failed to verify signature of payload: SqlSupport_x86 [0330:0BF8][2016-07-12T21:25:57]e310: Failed to verify payload: SqlSupport_x86 at path: C:\ProgramData\Package Cache\.unverified\SqlSupport_x86, error: 0x800b010a. Deleting file. [0330:0BF8][2016-07-12T21:25:57]e000: Error 0x800b010a: Failed to cache payload: SqlSupport_x86 [080C:0614][2016-07-12T21:25:57]e314: Failed to cache payload: SqlSupport_x86 from working path: C:\Users\MASAYU~1.OZA\AppData\Local\Temp\{55b82ab1-373d-4526-96d2-01a9e8f1b0ab}\SqlSupport_x86, error: 0x800b010a. [080C:0614][2016-07-12T21:25:57]e349: Application requested retry of payload: SqlSupport_x86, encountered error: 0x800b010a. Retrying... [0330:0BF8][2016-07-12T21:25:58]e000: Error 0x800b010a: Failed authenticode verification of payload: C:\ProgramData\Package Cache\.unverified\SqlSupport_x86 [0330:0BF8][2016-07-12T21:25:58]e000: Error 0x800b010a: Failed to verify signature of payload: SqlSupport_x86 [0330:0BF8][2016-07-12T21:25:58]e310: Failed to verify payload: SqlSupport_x86 at path: C:\ProgramData\Package Cache\.unverified\SqlSupport_x86, error: 0x800b010a. Deleting file. [0330:0BF8][2016-07-12T21:25:58]e000: Error 0x800b010a: Failed to cache payload: SqlSupport_x86 [080C:0614][2016-07-12T21:25:58]e314: Failed to cache payload: SqlSupport_x86 from working path: C:\Users\MASAYU~1.OZA\AppData\Local\Temp\{55b82ab1-373d-4526-96d2-01a9e8f1b0ab}\SqlSupport_x86, error: 0x800b010a. [0330:0BF8][2016-07-12T21:25:58]i351: Removing cached package: DotNet46, from path: C:\ProgramData\Package Cache\83D048D171FF44A3CAD9B422137656F585295866[0330:0BF8][2016-07-12T21:25:58]i351: Removing cached package: VCRedistD14x86, from path: C:\ProgramData\Package Cache\BFB74E498C44D3A103CA3AA2831763FB417134D1[080C:08E4][2016-07-12T21:25:58]e000: Error 0x800b010a: Failed while caching, aborting execution. [0330:0714][2016-07-12T21:25:58]i330: Removed bundle dependency provider: {55b82ab1-373d-4526-96d2-01a9e8f1b0ab} [0330:0714][2016-07-12T21:25:58]i352: Removing cached bundle: {55b82ab1-373d-4526-96d2-01a9e8f1b0ab}, from path: C:\ProgramData\Package Cache\{55b82ab1-373d-4526-96d2-01a9e8f1b0ab}[080C:08E4][2016-07-12T21:25:58]e000: MainViewModel.OnBundleAction: Bundle action failed: 証明書チェーンを、信頼されたルート機関として構築できませんでした。 (0x800B010A) [080C:08E4][2016-07-12T21:25:58]i399: Apply complete, result: 0x800b010a, restart: None, ba requested restart: No [080C:00DC][2016-07-13T07:49:30]i000: MainViewModel.OpenUrl: Opening url: C:\Users\MASAYU~1.OZA\AppData\Local\Temp\SsmsSetup\SSMS-Setup-JPN_20160712212521.log
インターネットに接続されている環境であれば、インストールプロセスの「パッケージを読み込んでいます。しばらくお待ちください…」のタイミングで、で CRL の確認等が行われ、その中で以下の URL にアクセスをしてルート証明書の追加が行われています。
http://www.microsoft.com/pki/certs/MicRooCerAut2011_2011_03_22.crt
http://www.microsoft.com/pki/certs/MicRooCerAut_2010-06-23.crt
インターネットに接続されていない環境ですと、インストールする必要のあるパッケージで使用しているルート証明書の入手ができないため、エラーとなるようです。
ユーザーの信頼されたルート証明機関の証明書に
- Microsoft Root Certificate Authority 2010
- Microsoft Root Certificate Authority 2011
が含まれていない場合は、上記の URL から証明書をダウンロードしてインストールすることで、冒頭で紹介したエラーを回避できるようになります。
この対応と合わせて、 Windows 8/2012 以前のインターネット接続がない環境への SQL Server Management Studio のインストールが失敗する に書かれている https://support.microsoft.com/ja-jp/kb/2862966 がインストールされていることが、Windows 7 SP1 で最新の SSMS をインストールするための条件となるようです。
# KB2862966 もインストールされていないと Visual Studio 2015 isolated shell? のインストールでエラーとなります。
ルート証明書のインストールの方法としては、ルート証明書の登録方法について で紹介されている「rootsupd.exe」をインストールする方法もあるかと思いますが、この exe、DL しようとすると Windows 10 の Windows Defender で Malware 扱いされるため、企業内の N/W からそもそも入手できない可能性がありますので、証明書を個別にインストールしたほうが良いかと。
また、「ルート証明書の自動更新をオフ」のようなポリシーを設定しても、本エラーは回避できませんので、ルート証明書はインストーラーを実行するユーザーの有効なルート証明書としてインストールしておく必要があります。
関連として以下のような情報もありましたので、こちらはご紹介まで。
Windows Vista SP2、Windows Server 2008 SP2、Windows 7 SP1、および Windows Server 2008 R2 SP1 用の .NET Framework 4.6.1/4.6 のセキュリティ更新プログラム 3136000 および .NET Framework 4.5.2 のセキュリティ更新プログラム 3135996 の既知の問題
信頼されたルートおよび許可されない証明書を構成する
管理者が、接続されていない Windows 環境で信頼されている CTL と許可されていない CTL を更新できるようにする更新プログラムについて
Microsoft Trusted Root Certificate Program Updates