フェールオーバー クラスタのトラブルシューティング

更新 : 2006 年 7 月 17 日

このトピックでは、次の問題について説明します。

  • 基本的なトラブルシューティング手順
  • フェールオーバー クラスタ障害からの回復
  • フェールオーバー クラスタリングに関する一般的な問題の解決
  • 拡張ストアド プロシージャおよび COM オブジェクトの使用

基本的なトラブルシューティング手順

SQL Server 2005 フェールオーバー クラスタリングを使用するときは、MSCS (Microsoft Cluster Services) の下で実行されているフェールオーバー クラスタ インスタンスでサーバー クラスタが構成されていることに注意してください。SQL Server インスタンスのホストが、Microsoft サーバー クラスタを提供する Microsoft MSCS ベースのノードである可能性があります。

サーバー クラスタのホストであるノードに問題がある場合、それがフェールオーバー クラスタ インスタンスの問題として表面化することがあります。問題を調査して解決するには、次に示す順番で SQL Server フェールオーバー クラスタのトラブルシューティングを実行します。

  1. ハードウェア : Microsoft Windows システム イベント ログを確認します。
  2. オペレーティング システム : Windows システム イベント ログおよびアプリケーション イベント ログを確認します。
  3. ネットワーク : Windows システム イベント ログおよびアプリケーション イベント ログを確認します。サポート技術情報の記事「クラスタ サーバーでのプライベート "ハートビート" の推奨構成」を参照してください。
  4. セキュリティ : Windows アプリケーション イベント ログおよびセキュリティ イベント ログを確認します。
  5. MSCS: Windows システム ログ、アプリケーション イベント ログ、およびクラスタ ログを確認します。
  6. SQL Server: 基盤となるハードウェア、オペレーティング システム、ネットワーク、セキュリティ、および MSCS に問題がないことを確認してから、通常どおりにトラブルシューティングを行ってください。

フェールオーバー クラスタ障害からの回復

フェールオーバー クラスタ障害の一般的な原因は、次の 2 つのいずれかです。

  • 2 ノード クラスタのいずれかのノードでハードウェア障害が発生しています。このハードウェア障害は、SCSI カードまたはオペレーティング システムの障害によって発生する可能性があります。
    この障害から回復するには、SQL Server セットアップ プログラムを使用して、障害が発生したノードをフェールオーバー クラスタから削除し、コンピュータをオフラインにしてハードウェアの障害を処置し、コンピュータを再び起動します。その後、修復されたノードをフェールオーバー クラスタ インスタンスに追加します。
    詳細については、「新しい SQL Server 2005 フェールオーバー クラスタを作成する方法 (セットアップ)」および「フェールオーバー クラスタ障害例 1 で障害から復旧する方法」を参照してください。
  • オペレーティング システムの障害が発生しています。このときノードはオフラインになりますが、回復不可能なほどには破損していません。
    オペレーティング システムの障害から回復するには、ノードを復旧してフェールオーバーをテストします。SQL Server インスタンスのフェールオーバーが正しく行われない場合、SQL Server セットアップ プログラムを使用してフェールオーバー クラスタから SQL Server を削除し、必要な修復を行い、コンピュータを再び起動します。その後、修復されたノードをフェールオーバー クラスタ インスタンスに追加する必要があります。
    この方法でオペレーティング システムの障害から回復すると、時間がかかる場合があります。オペレーティング システムの障害から簡単に回復できる場合には、この方法は使用しないでください。
    詳細については、「新しい SQL Server 2005 フェールオーバー クラスタを作成する方法 (セットアップ)」および「フェールオーバー クラスタ障害のシナリオ 2 で障害から回復する方法」を参照してください。

また、SQL Server 2005 では、フェールオーバー クラスタリングが次のように変更されたことを考慮してください。

一般的な問題の解決

次に、一般的な使用上の問題とその解決策を示します。

問題 : SQL Server 2005 をインストールするコマンド プロンプト構文の使い方が正しくない

現象 1: コマンド プロンプトで /qn スイッチを使用すると、/qn スイッチによりセットアップのダイアログ ボックスとエラー メッセージが表示されなくなるため、セットアップの問題を診断することが難しくなります。/qn スイッチを指定すると、エラー メッセージを含むすべてのセットアップ メッセージがセットアップ ログ ファイルに書き込まれます。ログ ファイルの詳細については、「SQL Server 2005 セットアップ ログ ファイルを表示する方法」を参照してください。

解決策 1: /qn スイッチの代わりに /qb スイッチを使用します。/qb スイッチを使用すると、各ステップでは、エラー メッセージなどの基本的な UI が表示されます。

現象 2: SQL Server 2005 インストール メディアのルート ディレクトリにある template.ini ファイルで使用されている形式に従っていません。

解決策 2: セットアップ プログラムでは予期しない文字が無視される可能性はありますが、インストール コマンドで必要な変数をすべて指定します。

コマンド ラインでは、変数と値の間にはスペースを挿入しないでください。たとえば、"ADDLOCAL=ALL" のように、変数と値の間にはスペースを挿入しません。"ADDLOCAL = ALL" と指定した場合、セットアップは失敗します。IP と値の場合も同様です。"IP=www.xxx.yyy.zzz,Local Area Connection" が正しい形式です。"," の後にスペースを挿入した場合、セットアップは失敗します。

問題 : SQL Server 2005 を別のノードに移行した後、ネットワークにログオンできない

現象 1: SQL Server サービス アカウントがドメイン コントローラと通信できません。

解決策 1: アダプタの障害、DNS の問題など、ネットワークに関する問題の徴候をイベント ログで確認します。ドメイン コントローラに対して ping を実行できることを確認します。

現象 2: SQL Server サービス アカウントのパスワードがすべてのクラスタ ノードで同一でないか、障害が発生したノードから移行した SQL Server サービスがノードで再起動されません。

解決策 2: SQL Server 構成マネージャを使用して SQL Server サービス アカウントのパスワードを変更します。この操作を行わず、1 つのノードで SQL Server サービス アカウントのパスワードを変更した場合、他のすべてのノードでもパスワードを変更する必要があります。SQL Server 構成マネージャを使用すると、この操作が自動的に行われます。

問題 : SQL Server がクラスタ ディスクにアクセスできない

現象 1: すべてのノードのファームウェアまたはドライバが更新されていません。

解決策 1: すべてのノードで使用しているファームウェアのバージョンが正しいことおよびドライバのバージョンが同一であることを確認します。

現象 2: ドライブ文字が異なる共有クラスタ ディスクで、障害が発生したノードから移行したクラスタ ディスクを復旧できません。

解決策 2: クラスタ ディスクのドライブ文字は、両方のサーバーで同じである必要があります。同じでない場合は、オペレーティング システムおよび MSCS (Microsoft Cluster Service) の初期のインストール状態を確認してください。

問題 : SQL Server サービスの障害によりフェールオーバーが発生する

解決策 : 特定のサービスの障害による SQL Server グループのフェールオーバーを回避するには、Windows のクラスタ アドミニストレータを使用してサービスを次のように構成します。

  • [フルテキストのプロパティ] ダイアログ ボックスの [詳細設定] タブで、[グループに適用する] チェック ボックスをオフにします。ただし、SQL Server によりフェールオーバーが発生した場合は、フルテキスト検索サービスが再起動します。

問題 : SQL Server が自動的に起動しない

解決策 : フェールオーバー クラスタを自動的に起動するには、MSCS でクラスタ アドミニストレータを使用します。SQL Server サービスは手動で開始するように設定されています。クラスタ アドミニストレータは MSCS で SQL Server サービスを開始するように構成されています。

問題 : ネットワーク名がオフラインで、SQL Server に TCP/IP で接続できない

現象 1: DNS 必須に設定されているクラスタ リソースで DNS が失敗します。

解決策 1: DNS の問題を修正します。

現象 2: ネットワーク上に重複する名前があります。

解決策 2: NBTSTAT を使用して重複する名前を検索し、問題を修正します。

現象 3: SQL Server の接続に名前付きパイプが使用されていません。

解決策 3: 名前付きパイプで接続するには、SQL Server 構成マネージャを使用して別名を作成し、適切なコンピュータに接続します。たとえば、2 つのノード (Node A および Node B) から成るクラスタ、および既定のインスタンスを使用するフェールオーバー クラスタ インスタンス (Virtsql) がある場合、次の手順に従って、オフラインのネットワーク名リソースがあるサーバーに接続できます。

  1. クラスタ アドミニストレータを使用して、SQL Server インスタンスを含むグループが実行されているノードを特定します。この例では、Node A です。
  2. net start を使用して、そのコンピュータの SQL Server サービスを開始します。net start の使用方法の詳細については、「手動による SQL Server の起動」を参照してください。
  3. Node A で SQL Server SQL Server 構成マネージャを起動します。サーバーがリッスンしているパイプ名を確認します。パイプ名は \\.\$$\VIRTSQL\pipe\sql\query のように表示されます。
  4. クライアント コンピュータで、SQL Server 構成マネージャを起動します。
  5. "SQLTEST1" という別名を作成し、名前付きパイプ経由でこのパイプ名に接続します。これを行うには、サーバー名として「Node A」と入力し、パイプ名を編集して \\.\pipe\$$\VIRTSQL\sql\query とします。
  6. 別名 SQLTEST1 をサーバー名として使用して、このインスタンスに接続します。

問題 : クラスタでエラー 1058 が発生して SQL Server セットアップが失敗する

現象 : クラスタ ノードのタスク スケジューラ サービスを無効にすると、エラー 1058 が発生してセットアップが失敗します。core.log に次のエントリが記録されます。

Error: SetTargetComputer on \\machinename failed with
Unable to start service (1058)
Error: RunRemoteProcess Received return code 1058 from STPCOMPAQ3790N2

ログの最後の行は次のようになります。

<EndFunc Name='DwLaunchMsiExec' Return='1058' GetLastError='183'>

解決策 : クラスタ マネージャを使用して、すべてのクラスタ ノードのタスク スケジューラ サービスを有効にします。詳細については、「Windows タスク スケジューラ サービスを有効にする方法」を参照してください。

問題 : クラスタでエラー 11001 が発生して SQL Server セットアップが失敗する

現象 : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.X\Cluster に孤立したレジストリ キーがあります。

解決策 : MSSQL.X レジストリ ハイブが使用中でないことを確認し、クラスタ キーを削除します。

問題 : クラスタ セットアップ エラー "インストーラにはディレクトリ <drive>\Microsoft SQL Server にアクセスするための十分な特権がありません。インストールを続行できません。管理者としてログオンするか、またはシステム管理者に問い合わせてください。" が発生する

現象 : このエラーは SCSI 共有ドライブのパーティションが適切に分割されていないために発生します。

解決策 : 次の手順に従って、共有ディスクに単一のパーティションを再作成します。

  1. クラスタからディスク リソースを削除します。
  2. ディスクのすべてのパーティションを削除します。
  3. ディスクのプロパティで、ディスクが基本ディスクになっていることを確認します。
  4. 共有ディスクにパーティションを 1 つ作成し、ディスクをフォーマットして、ドライブ文字を割り当てます。
  5. クラスタ アドミニストレータ (cluadmin) を使用してディスクをクラスタに追加します。
  6. SQL Server セットアップを実行します。

問題 : アプリケーションで、SQL Server 2005 リソースを分散トランザクションに参加させることができない

現象 : MS DTC (Microsoft 分散トランザクション コーディネータ) が Windows で完全に構成されていないために、アプリケーションから SQL Server 2005 リソースを分散トランザクションに参加させることができない場合があります。この問題は、分散トランザクションを使用するリンク サーバー、分散クエリ、およびリモート ストアド プロシージャに影響することがあります。

解決策 : この問題を回避するには、SQL Server 2005 をインストールしたサーバーの MS DTC サービスを完全に有効にする必要があります。

MS DTC を完全に有効にするには、次の手順を実行します。

  1. [コントロール パネル] で [管理ツール] を開き、[コンピュータの管理] を開きます。
  2. [コンピュータの管理] の左ペインで、[サービスとアプリケーション] を展開し、[サービス] をクリックします。
  3. [コンピュータの管理] の右ペインで、[Distributed Transaction Coordinator] を右クリックし、[プロパティ] をクリックします。
  4. [Distributed Transaction Coordinator のプロパティ] ウィンドウで [全般] タブをクリックし、[停止] をクリックしてサービスを停止します。
  5. [Distributed Transaction Coordinator のプロパティ] ウィンドウで [ログオン] タブをクリックし、ログイン アカウント NT AUTHORITY\NetworkService を設定します。
  6. [適用] をクリックして [OK] をクリックし、[Distributed Transaction Coordinator のプロパティ] ウィンドウを閉じます。[コンピュータの管理] ウィンドウを閉じます。[管理ツール] ウィンドウを閉じます。
ms189117.note(ja-jp,SQL.90).gifメモ :
フェールオーバー クラスタに参加している SQL Server 2005 コンピュータは、セットアップを実行する前に MS DTC を完全に有効にしてクラスタ化しておく必要があります。MS DTC がクラスタ化されていない場合、セットアップに失敗します。セットアップを実行する前に、Microsoft クラスタ アドミニストレータを使用して MS DTC をクラスタ化してください。

問題 : CD からインストールした場合に SQL Server 2005 フェールオーバー クラスタのセットアップに失敗する場合がある

現象 : SQL Server 2005 のセットアップ中にフェールオーバー クラスタ コンポーネントとクライアント ツール コンポーネントを選択すると、CD 2 を挿入した後に、"リモート セットアップに失敗しました" というエラーが表示され、インストールに失敗する場合があります。

解決策 : 両方の CD のインストール ファイルをアクティブ クラスタ ノードまたはネットワーク共有上の 1 つのディレクトリに コピーします。次に例を示します。

c:
cd\
md SQLENT

両方の CD を SQLENT ディレクトリにコピーします。

\SQLENT\Servers

\SQLENT\Tools

ms189117.note(ja-jp,SQL.90).gifメモ :
DVD のインストールではこの問題は発生しません。

拡張ストアド プロシージャおよび COM オブジェクトの使用

フェールオーバー クラスタリング構成で拡張ストアド プロシージャを使用する場合、SQL Server に依存するクラスタ ディスク上にすべての拡張ストアド プロシージャをインストールする必要があります。これは、ノードがフェールオーバーしても拡張ストアド プロシージャを使用できるようにするためです。

拡張ストアド プロシージャで COM コンポーネントが使用される場合、管理者はその COM コンポーネントをクラスタ内の各ノードに登録する必要があります。COM コンポーネントを作成するには、COM コンポーネントを読み込んで実行するための情報をアクティブなノードのレジストリに格納する必要があります。この場所に格納しないと、その情報は COM コンポーネントを最初に登録したコンピュータのレジストリに残ります。

参照

その他の技術情報

SQL Server 2005 セットアップ ログ ファイルを表示する方法
拡張ストアド プロシージャのしくみ
拡張ストアド プロシージャの実行における特性

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2006 年 7 月 17 日

変更内容 :
  • CD メディアからのセットアップの失敗に関するセクションを追加しました。