22 June 2011 0 Comments

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

神谷 雅紀 Escalation Engineer   対象バージョン   SQL Server 2008 R2 SQL Server 2008   Step 1 – Summary.txt でエラー内容を確認する   SQL Server のセットアップに失敗した場合、まず最初に確認するべきは、Summary.txt ファイルの記録です。このファイルは、既定では、以下の場所に保存されています。 C:Program FilesMicrosoft SQL Server100Setup BootstrapLog 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 FilesMicrosoft SQL Server100Setup BootstrapLog20110621_094055WatsonX64_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” http://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: \tsclientDx64setup  Installation edition: STANDARD               この技術情報には、セットアップの場所を TSClient 共有ではなく\computernameshare 形式やドライブ文字をマップすることで、エラーに対処できると書かれています。 これで新たな対処方法が見つかりました。この方法であれば、どうしてもリモートデスクトップを使ってセットアップを実行しなければならない状況であっても対処可能です。   TSClient 共有は、リモートデスクトップ接続時のオプションとして、[ローカルリソース] タブの [詳細] でローカルコンピュータのディスクを指定した場合に、接続先コンピュータ上でローカルコンピュータ上のディスクにアクセスできる機能です。   Tips   インターネットを検索する場合、やはり、英語の情報の方が圧倒的に多いため、エラーメッセージも英語で検索した方が情報を得られる可能性が高くなります。英語メッセージを確認するために、chcp コマンドでコマンドプロンプト環境を英語 (コードページ 437) に切り替えた後で net helpmsg コマンドを実行するという方法があります。     上の方法がうまくいかない場合は、err.exe という便利なツールがあります。個人的には、エラーコードからエラーメッセージを調べる場合には、いつも err.exe を使っています。   Microsoft Exchange Server Error Code Look-up http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=985

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

If you liked this post, buy me a Coffee.

Leave a Reply