SQL Server セットアップトラブルシューティング – 初級編

神谷 雅紀
Escalation Engineer

 

対象バージョン

 

SQL Server 2008 R2
SQL Server 2008

 

Step 1 – Summary.txt でエラー内容を確認する

 

SQL Server のセットアップに失敗した場合、まず最初に確認するべきは、Summary.txt ファイルの記録です。このファイルは、既定では、以下の場所に保存されています。

C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Log

Log フォルダ下に、最新のセットアップの Summary.txt があります。また、Log フォルダ下には、セットアップを実行した日時を示す YYYYMMDD_HHMMSS 形式のフォルダ名を持つフォルダもあり、そのフォルダ下には Summary_computername_date_time.txt 形式のファイル名を持つ Summary.txt があります。 Summary.txt には、エラーとなったコンポーネント、エラーコード、エラーメッセージなどが記録されています。

 

Summary.txt サンプル

 

Overall summary: Final result: 失敗しました: 以下の詳細を参照してください Exit code (Decimal): -2068052371 Exit facility code: 1212 Exit error code: 1645 Exit message: 失敗しました: 以下の詳細を参照してください Start time: 2011-06-21 09:40:10 End time: 2011-06-21 09:41:30 Requested action: ComponentUpdate Log with failure: C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Log\20110621_094055\WatsonX64_Cpu64_1_ComponentUpdate.log

 

 

 

 

 

 

上のサンプルでは、エラーメッセージとして詳しいメッセージは出ていません。しかし、Exit error code として、エラーコード 1645 が記録されています。また、Exit code (Decimal) も記録されています。Exit code (Decimal) として記録されている値 -2068052371 は、16 進数 (hexadecimal) に変換すると 0x84bc066d となります。プログラムを書く人には馴染みのある形式かと思いますが、これは HRESULT 形式のエラーコードであると考えられます。試しにこれを HRESULT のフォーマットに従って分解してみると、先頭ビットが 1 なので FAILURE、Facility code 0x4bc, Error code 0x66d となります。Error code の 0x66d は、10 進数 (decimal) の 1645 であるため、意味するところは、Exit error code と同じだということが分かります。

確認すべきは 1645 だろうということで、net helpmsg コマンドを使って、このエラーコードが何を意味しているのかを確認します。

 

 

エラー 1645 は ERROR_INSTALL_REMOTE_PROHIBITED として、Platform SDK 付属のヘッダーファイル winerror.h に定義されているエラーです。

このメッセージから、リモートデスクトップを使わず、セットアップ先コンピュータにローカルログオンしてセットアップを実行することで、このエラーに対処できそうだということが分かります。

 

Step 2 - インターネットを検索してみる

 

他の人が考えも付かないようなすごい事をしていない限り、世界中のどこかに自分と同じ事をしている人がいる可能性は高いと思います。こんなツールがあったら便利と思って探すと、多くの場合、既にそう思った人がいて、そんなツールを作っていたりするものです。セットアップのトラブルも、製品リリースから時間が経過すればするほど、多くの事例がインターネット上に存在するようになります。Summary.txt で確認することのできたエラーの内容でインターネットを検索すると、何かしらの解決方法を見つけ出せる可能性は高いと思います。

上のサンプルで確認したエラーコード 1645 とエラーメッセージ中の “Windows Installer” で検索すると、以下の技術情報が見つかります。

 

Error message when you try to install a MSI package on a Windows Server 2003-based computer by using RDP connection: "Windows Installer does not permit installation from a Remote Desktop Connection"

https://support.microsoft.com/kb/927063/en-us

 

これを見ると、他のコンピュータからのリモートデスクトップ接続上で Windows Installer パッケージをインストールしようとすると、Windows Installer バージョンが 2.0.3790 以上の場合に 1645 エラーになる場合があると書かれています。また、エラーになる条件は、UNC 形式のTSClient 共有を使っている場合であると書かれています。Summary.txt の後半部分を確認すると、TSClient が使われていることが確認できます。

 

Package properties: Description: SQL Server Database Services 2008 R2 ProductName: SQL Server 2008 R2 Type: RTM Version: 10 SPLevel: 0 Installation location: \\tsclient\D\x64\setup\ Installation edition: STANDARD

 

 

 

 

 

 

 

この技術情報には、セットアップの場所を TSClient 共有ではなく\\computername\share 形式やドライブ文字をマップすることで、エラーに対処できると書かれています。

これで新たな対処方法が見つかりました。この方法であれば、どうしてもリモートデスクトップを使ってセットアップを実行しなければならない状況であっても対処可能です。

 

TSClient 共有は、リモートデスクトップ接続時のオプションとして、[ローカルリソース] タブの [詳細] でローカルコンピュータのディスクを指定した場合に、接続先コンピュータ上でローカルコンピュータ上のディスクにアクセスできる機能です。

 

Tips

 

インターネットを検索する場合、やはり、英語の情報の方が圧倒的に多いため、エラーメッセージも英語で検索した方が情報を得られる可能性が高くなります。英語メッセージを確認するために、chcp コマンドでコマンドプロンプト環境を英語 (コードページ 437) に切り替えた後で net helpmsg コマンドを実行するという方法があります。

 

 

上の方法がうまくいかない場合は、err.exe という便利なツールがあります。個人的には、エラーコードからエラーメッセージを調べる場合には、いつも err.exe を使っています。

 

Microsoft Exchange Server Error Code Look-up

https://www.microsoft.com/download/en/details.aspx?displaylang=en&id=985