適用対象:SQL Server
この記事では、次の問題に関する情報を提供します。
- 基本的なトラブルシューティング手順
- フェールオーバー クラスターの障害からの復旧
- 最も一般的なフェールオーバー クラスタリングの問題を解決する
- 拡張ストアド プロシージャと COM オブジェクトを使用する
基本的なトラブルシューティングの手順
診断の最初の手順では、新しいクラスターの検証チェックを実行します。 検証の詳細については、「フェールオーバー クラスターを作成する」のページの「構成の検証」を参照してください。 これは、オンライン クラスター リソースに影響しないため、サービスを中断することなく完了できます。
フェールオーバー クラスタ リング機能をインストールしたら、クラスターの展開前、クラスターの作成中、クラスターの実行中を含め、いつでも検証を実行することができます。 実際、クラスターが使用されると、追加のテストが実行されます。このテストでは、高可用性ワークロードのベスト プラクティスに従っていることを確認します。 これらの数十のテスト全体で、クラスター ワークロードの実行に影響を与えるテストはごくわずかであり、これらはすべてストレージ カテゴリ内であるため、このカテゴリ全体をスキップすると、破壊的なテストを回避する簡単な方法です。
フェールオーバー クラスタリングには、検証中にストレージ テストを実行するときの偶発的なダウンタイムを防ぐためのセーフガードが組み込まれています。 検証が開始されたときにクラスターにオンライン グループがあり、ストレージ テストが選択されたままの場合は、すべてのテストを実行する (およびダウンタイムを引き起こす) か、ダウンタイムを回避するためにオンライン グループのディスクのテストをスキップするかをユーザーに確認するように求められます。 ストレージ カテゴリ全体がテスト対象から除外された場合、このプロンプトは表示されません。 これにより、ダウンタイムなしでクラスターの検証が可能になります。
クラスターを再検証する方法
フェールオーバー クラスター スナップインのコンソール ツリーで、 フェールオーバー クラスター管理 が選択されていることを確認し、[ 管理] で [ 構成の検証] を選択します。
ウィザードの指示に従って、サーバーとテストを指定し、テストを実行します。 テストの実行後、 [概要] ページが表示されます。
[概要] ページで、[レポートの表示] を選択してテスト結果を表示します。
ウィザードを閉じた後にテストの結果を表示するには、オペレーティング システムがインストールされているフォルダー (
%SystemRoot%\Cluster\Reports\Validation Report date and time.htmlなど)%SystemRoot%C:\Windows参照してください。結果の解釈に役立つヘルプ記事を表示するには、[ クラスター検証テストの詳細] を選択します。
ウィザードを閉じた後にクラスターの検証に関するヘルプ記事を表示するには、フェールオーバー クラスター スナップインで、[ ヘルプ] を選択し、[ ヘルプ トピック] を選択し、[ コンテンツ ] タブを選択し、フェールオーバー クラスター のヘルプの内容を展開して、[ フェールオーバー クラスター構成の検証] を選択します。 検証ウィザードが完了すると、 [概要レポート] に結果が表示されます。 すべてのテスト結果が緑色のチェック マーク、または場合によっては黄色の三角形 (警告) になる必要があります。 問題領域 (赤い X または黄色の疑問符) を探す場合は、テスト結果を要約したレポートの部分で、個々のテストを選択して詳細を確認します。 赤い X の問題は、SQL Server の問題をトラブルシューティングする前に解決する必要があります。
の更新プログラムをインストールする
更新プログラムのインストールは、システムの問題を防ぐために重要です。 役に立つリンク:
- Windows Server 2012 R2 ベースのフェールオーバー クラスターの推奨される修正プログラムと更新プログラム
- Windows Server 2012 ベースのフェールオーバー クラスターの推奨される修正プログラムと更新プログラム
- Windows Server 2008 R2 ベースのフェールオーバー クラスターの推奨される修正プログラムと更新プログラム
- Windows Server 2008 ベースのフェールオーバー クラスターの推奨される修正プログラムと更新プログラム
フェールオーバー クラスターの障害からの復旧
フェールオーバー クラスター障害の一般的な原因は、次の 2 つのいずれかです。
2 ノード クラスターのいずれかのノードでハードウェア障害が発生しています。 このハードウェア障害は、SCSI カードまたはオペレーティング システムの障害によって発生する可能性があります。
この障害から復旧するには、 SQL Server セットアップ プログラムを使用して、障害が発生したノードをフェールオーバー クラスターから削除し、コンピューターをオフラインにしてハードウェアの障害を処置し、コンピューターを再び起動します。その後、修復されたノードをフェールオーバー クラスター インスタンスに追加します。
詳細については、「 新しい Always On フェールオーバー クラスター インスタンスの作成 (セットアップ) 」および「 フェールオーバー クラスター インスタンスの障害からの復旧」を参照してください。
オペレーティング システムの障害が発生しています。 この場合、ノードはオフラインですが、取り返しのつかないほど壊れていません。
オペレーティング システムの障害から復旧するには、ノードを復旧してフェールオーバーをテストします。 SQL Server インスタンスが正常にフェールオーバーされない場合は、SQL Server セットアップ プログラムを使用して、フェールオーバー クラスターから SQL Server を削除し、必要な修復を行い、コンピューターをバックアップしてから、修復されたノードをフェールオーバー クラスター インスタンスに追加し直す必要があります。
この方法でオペレーティング システムの障害から復旧すると、時間がかかる場合があります。 オペレーティング システムの障害から簡単に復旧できる場合には、この方法は使用しないでください。
詳細については、「 新しい Always On フェールオーバー クラスター インスタンスの作成 (セットアップ) 」および「 フェールオーバー クラスター インスタンスの障害からの復旧」を参照してください。
一般的な問題を解決する
次に、一般的な使用上の問題とその解決策を示します。
問題: SQL Server をインストールするコマンド プロンプト構文の使用方法が正しくない
問題 1: コマンド プロンプトから /qn スイッチを使用すると、 /qn スイッチによってすべてのセットアップ ダイアログ ボックスとエラー メッセージが表示されなくなっているため、セットアップの問題を診断することは困難です。
/qn スイッチを指定すると、エラー メッセージを含むすべてのセットアップ メッセージがセットアップ ログ ファイルに書き込まれます。 ログ ファイルの詳細については、「 SQL Server セットアップ ログ ファイルの表示と読み取り」を参照してください。
解決策 1: /qb スイッチではなく、/qn スイッチを使用します。
/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: クラスター ディスクのディスク ドライブ文字は、両方のサーバーで同じである必要があります。 インストールされていない場合は、オペレーティング システムと Microsoft Cluster Service (MSCS) の元のインストールを確認します。
問題: SQL Server サービスの障害によりフェールオーバーが発生する
解決策 : 特定のサービスの障害による SQL Server グループのフェールオーバーを回避するには、Windows のクラスター アドミニストレーターを使用してサービスを次のように構成します。
- [フルテキストのプロパティ] ダイアログ ボックスの [詳細設定] タブで、 [グループに適用する] チェック ボックスをオフにします。 ただし、 SQL Server によりフェールオーバーが発生した場合は、フルテキスト検索サービスが再起動します。
問題: SQL Server が自動的に起動しない
解決策: フェールオーバー クラスターを自動的に起動するには、MSCS でクラスター アドミニストレーターを使用します。 SQL Server サービスは手動で開始するように設定されています。クラスター アドミニストレーターは MSCS で SQL Server サービスを開始するように構成されています。 詳細については、「 サービスの管理」を参照してください。
問題: ネットワーク名がオフラインで、TCP/IP を使用して SQL Server に接続できない
問題点 1: DNS 必須に設定されているクラスター リソースで DNS が失敗します。
解決策 1: DNS の問題を修正します。
問題点 2: ネットワーク上に重複する名前があります。
解決策 2:nbtstat を使用して重複する名前を見つけ、問題を修正します。
問題 3: SQL Server は名前付きパイプを使用して接続していません。
解決策 3: 名前付きパイプで接続するには、SQL Server 構成マネージャーを使用して別名を作成し、適切なコンピューターに接続します。 たとえば、2 つのノード (Node A および Node B) から成るクラスター、および既定のインスタンスを使用するフェールオーバー クラスター インスタンス (Virtsql) がある場合、次の手順に従って、オフラインのネットワーク名リソースがあるサーバーに接続できます。
クラスター アドミニストレーターを使用して、 SQL Server インスタンスを含むグループが実行されているノードを特定します。 この例では、 ノード A です。
SQL Server net start を使用して、そのコンピューターのサービスを開始します。 net startの使用方法については、「 手動による SQL Server の起動」を参照してください。
Node A で SQL Server SQL Server 構成マネージャーを起動します。サーバーがリッスンしているパイプ名を確認します。
\\.\$$\VIRTSQL\pipe\sql\queryのようになります。クライアント コンピューターで、SQL Server 構成マネージャーを起動します。
名前付きパイプを介してこのパイプ名に接続するエイリアス
SQLTEST1を作成します。 これを行うには、サーバー名として 「ノード A 」と入力し、\\.\pipe\$$\VIRTSQL\sql\queryするパイプ名を編集します。エイリアス
SQLTEST1をサーバー名として使用して、このインスタンスに接続します。
問題: クラスターでエラー 11001 が発生して SQL Server セットアップが失敗する
問題:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.X\Clusterの孤立したレジストリキー。
解決:MSSQL.X レジストリ ハイブが現在使用されていないことを確認し、クラスター キーを削除します。
問題: クラスター セットアップ エラー: "インストーラーにはディレクトリ <drive>\Microsoft SQL Server にアクセスするための十分な特権がありません。 インストールを続行できません。 管理者としてログオンするか、またはシステム管理者に問い合わせてください。" が発生する
発行: このエラーは、SCSI 共有ドライブが正しくパーティション分割されていないことが原因で発生します。
解決: 次の手順を使用して、共有ディスク上に 1 つのパーティションを再作成します。
- クラスターからディスク リソースを削除します。
- ディスクのすべてのパーティションを削除します。
- ディスクのプロパティで、ディスクが基本ディスクになっていることを確認します。
- 共有ディスクにパーティションを 1 つ作成し、ディスクをフォーマットして、ドライブ文字を割り当てます。
- クラスター アドミニストレーター (cluadmin) を使用してディスクをクラスターに追加します。
- SQL Server セットアップを実行します。
問題: アプリケーションで SQL Server リソースを分散トランザクションに参加させることができない
発行: Microsoft 分散トランザクション コーディネーター (MS DTC) は Windows で完全に構成されていないため、アプリケーションが分散トランザクションに SQL Server リソースを参加させることに失敗する可能性があります。 この問題は、分散トランザクションを使用するリンク サーバー、分散クエリ、およびリモート ストアド プロシージャに影響することがあります。 MS DTC を構成する方法の詳細については、「 Before Installing Failover Clustering」を参照してください。
解決策: このような問題を回避するには、SQL Server をインストールして MS DTC を構成したサーバーで、MS DTC サービスを完全に有効にする必要があります。
MS DTC を完全に有効にするには、次の手順を実行します。
コントロール パネルで、 [管理ツール] を開き、 [コンピューターの管理] を開きます。
[コンピューターの管理] の左側のウィンドウで、[ サービスとアプリケーション] を展開し、[ サービス] を選択します。
[コンピューターの管理] の右ペインで、 [Distributed Transaction Coordinator] を右クリックし、 [プロパティ] をクリックします。
[ 分散トランザクション コーディネーター ] ウィンドウで、[ 全般 ] タブを選択し、[ 停止 ] を選択してサービスを停止します。
[ 分散トランザクション コーディネーター ] ウィンドウで、[ ログオン ] タブを選択し、ログオン アカウントを
NT AUTHORITY\NetworkService設定します。[ 適用 ] と [OK] を 選択して、[ 分散トランザクション コーディネーター ] ウィンドウを閉じます。 [コンピューターの管理] ウィンドウを閉じます。 [管理ツール] ウィンドウを閉じます。
拡張ストアド プロシージャと COM オブジェクトを使用する
フェールオーバー クラスタリング構成で拡張ストアド プロシージャを使用する場合、 SQL Serverに依存するクラスター ディスク上にすべての拡張ストアド プロシージャをインストールする必要があります。 これは、ノードがフェールオーバーしても拡張ストアド プロシージャを使用できるようにするためです。
拡張ストアド プロシージャで COM コンポーネントが使用される場合、管理者はその COM コンポーネントをクラスター内の各ノードに登録する必要があります。 COM コンポーネントを作成するには、COM コンポーネントを読み込んで実行するための情報をアクティブなノードのレジストリに格納する必要があります。 この場所に格納しないと、その情報は COM コンポーネントを最初に登録したコンピューターのレジストリに残ります。