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

適用対象:SQL Server

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

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

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

  • フェールオーバー クラスタリングに関する一般的な問題の解決

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

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

診断の最初の手順では、新しいクラスターの検証チェックを実行します。 検証の詳細については、「フェールオーバー クラスターを作成する」のページの「構成の検証」を参照してください。 これは、オンラインのクラスター リソースに影響しないため、サービスを中断することなく実行できます。 フェールオーバー クラスタ リング機能をインストールしたら、クラスターの展開前、クラスターの作成中、クラスターの実行中を含め、いつでも検証を実行することができます。 実際には、クラスターの使用中に、可用性の高いワークロードのベスト プラクティスに従っているかどうかをチェックする追加テストも実行されます。 数十回のテストのうち数回は、実行中のクラスターのワークロードに影響しますが、これらはすべてストレージ カテゴリ内にあるため、このカテゴリ全体をスキップすると、簡単に中断を伴うテストを回避できます。
フェールオーバー クラスタ リングには、検証でストレージ テストを実行する際の偶発的なダウンタイムを回避する組み込みのセーフガードが付属しています。 検証の開始時にクラスターにオンライン グループが含まれており、ストレージ テストが選択されたままになっていると、すべてのテストを実行する (この場合、ダウンタイムが発生します) か、ダウンタイムを避けるためにすべてのオンライン グループのディスクのテストをスキップするかを確認するプロンプトが表示されます。 ストレージ カテゴリ全体をテスト対象から除外すると、このプロンプトは表示されません。 これにより、ダウンタイムなしのクラスターの検証が有効になります。

クラスターを再検証する方法

  1. フェールオーバー クラスター スナップインのコンソール ツリーで、 [フェールオーバー クラスター管理] が選択されていることを確認し、 [管理][構成の検証]をクリックします。

  2. ウィザードの指示に従って、サーバーとテストを指定し、テストを実行します。 テストの実行後、 [概要] ページが表示されます。

  3. [概要] ページで [レポートの表示] をクリックしてテスト結果を表示します。

    ウィザードを閉じた後にテスト結果を表示するには、 %SystemRoot%\Cluster\Reports\Validation Report date and time.html を参照してください。 %SystemRoot% はオペレーティング システムがインストールされているフォルダーです (たとえば、 C:\Windows)。

  4. 結果の解釈に役立つヘルプ トピックを表示するには、 [クラスター検証テストの詳細] をクリックします。

ウィザードを閉じた後にクラスター検証のヘルプ トピックを表示するには、フェールオーバー クラスター スナップインで [ヘルプ][ヘルプ トピック][コンテンツ] タブの順にクリックし、フェールオーバー クラスター ヘルプのコンテンツを展開して、 [フェールオーバー クラスター構成の検証]をクリックします。 検証ウィザードが完了すると、 [概要レポート] に結果が表示されます。 すべてのテスト結果が緑色のチェック マーク、または場合によっては黄色の三角形 (警告) になる必要があります。 問題の領域 (赤色の X 印または黄色の疑問符) がないかどうかを調べるには、テスト結果を要約したレポートで個々のテストをクリックして、詳細を確認します。 赤色の X 印の問題は、 SQL Server の問題のトラブルシューティングより前に解決する必要があります。

更新プログラムをインストールする

更新プログラムのインストールは、システムの問題を防ぐために重要です。 役に立つリンク:

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

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

  • 2 ノード クラスターのいずれかのノードでハードウェア障害が発生しています。 このハードウェア障害は、SCSI カードまたはオペレーティング システムの障害によって発生する可能性があります。

    この障害から復旧するには、 SQL Server セットアップ プログラムを使用して、障害が発生したノードをフェールオーバー クラスターから削除し、コンピューターをオフラインにしてハードウェアの障害を処置し、コンピューターを再び起動します。その後、修復されたノードをフェールオーバー クラスター インスタンスに追加します。

    詳細については、新しい SQL Server フェールオーバー クラスターの作成 (セットアップ) に関するページおよび「フェールオーバー クラスター インスタンス障害からの復旧」を参照してください。

  • オペレーティング システムの障害が発生しています。 このときノードはオフラインになりますが、復旧不可能なほどには破損していません。

    オペレーティング システムの障害から復旧するには、ノードを復旧してフェールオーバーをテストします。 SQL Server インスタンスのフェールオーバーが正しく行われない場合、 SQL Server セットアップ プログラムを使用してフェールオーバー クラスターから SQL Server を削除し、必要な修復を行い、コンピューターを再び起動します。その後、修復されたノードをフェールオーバー クラスター インスタンスに追加する必要があります。

    この方法でオペレーティング システムの障害から復旧すると、時間がかかる場合があります。 オペレーティング システムの障害から簡単に復旧できる場合には、この方法は使用しないでください。

    詳細については、新しい SQL Server フェールオーバー クラスターの作成 (セットアップ)フェールオーバー クラスター障害のシナリオ 2 で復旧する方法に関するページを参照してください。

一般的な問題の解決

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

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

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

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

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

現象 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. SQL Server net start を使用して、そのコンピューターのサービスを開始します。 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 をサーバー名として使用して、このインスタンスに接続します。

問題: クラスターでエラー 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 リソースを分散トランザクションに参加させることができない

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

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

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

  1. コントロール パネルで、 [管理ツール] を開き、 [コンピューターの管理] を開きます。

  2. [コンピューターの管理] の左ペインで、 [サービスとアプリケーション] を展開し、 [サービス] をクリックします。

  3. [コンピューターの管理] の右ペインで、 [Distributed Transaction Coordinator] を右クリックし、 [プロパティ] をクリックします。

  4. [Distributed Transaction Coordinator のプロパティ] ウィンドウで [全般] タブをクリックし、 [停止] をクリックしてサービスを停止します。

  5. [Distributed Transaction Coordinator のプロパティ] ウィンドウで [ログオン] タブをクリックし、ログイン アカウント NT AUTHORITY\NetworkService を設定します。

  6. [適用] をクリックして [OK] をクリックし、 [分散トランザクション コーディネーター] ウィンドウを閉じます。 [コンピューターの管理] ウィンドウを閉じます。 [管理ツール] ウィンドウを閉じます。

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

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

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

参照

SQL Server セットアップ ログ ファイルの表示と読み取り
拡張ストアド プロシージャのしくみ
拡張ストアド プロシージャの実行における特性