クラスター ノードを SQL Server 2012 にアップグレードしようとするとエラーが発生する

この記事では、フェールオーバー クラスターで SQL Server 2008 または SQL Server 2008 R2 インスタンスを SQL Server 2012 にアップグレードしようとすると発生する問題の解決策について説明します。

元の製品バージョン: SQL Server 2012
元の KB 番号: 2782511

現象

次のような状況で問題が発生します。

  • Windows Server 2012 フェールオーバー クラスターで実行されている 2 ノードの Microsoft SQL Server フェールオーバー クラスターがあります。 たとえば、プライマリ ノードはノード A、パッシブ ノードはノード B です。

    注:

    SQL Serverのインスタンスは、SQL Server 2008 または SQL Server 2008 R2 インスタンスのいずれかです。

  • フェールオーバー クラスター インスタンスのアップグレード」に記載されているプロセスを使用して、プライマリ ノード (ノード A) を SQL Server 2012 にアップグレードしようとするとします。

この場合に、次のようなエラー メッセージが表示されます。

リソース 'SQL Network Name (SQL Name)' の共通プロパティを保存できませんでした。 エラー: プロバイダーからクラスター コードを呼び出すエラーが発生しました。 例外メッセージ: このリソースの 1 つ以上のプロパティ値が、その依存リソースに関連付けられている 1 つ以上のプロパティ値と競合しています。

注:

  • SQL Name は、SQL Server ネットワーク名のプレースホルダーです。
  • この問題によりノード A でアップグレード エラーが発生しても、SQL Server リソース グループはアップグレードされたノード B に正常にフェールオーバーされます。さらに、フェールオーバー操作に 1 分未満かかるため、すべてのリソースがオンラインになり、クライアント接続が著しく中断されません。 ただし、ノード A でアップグレード プロセスを完了するには、「 解決策 」セクションに記載されている追加の手順に従う必要があります。

原因

この問題は、Windows Server 2012 フェールオーバー クラスタリングの変更が原因で発生します。

解決方法

このセクションでは、次のアクションについて説明します。

  • ノード A でアップグレードを完了します。
  • この問題が新しいアップグレードに影響を与えないようにします。

ノード A でアップグレードを完了する

このプロセスを開始する前に、次の点に注意してください。

  • ノードの削除操作を使用してノード A を 削除 することはできません。 この操作により、SQL Server フェールオーバー クラスター インスタンスが削除されます。 そのため、修復できません。

  • [プログラムのアンインストール] を使用して、SQL Server フェールオーバー クラスター インスタンスをアンインストールすることはできません。 この操作は機能しません。

  • セットアップ メディアの正しくないエディション (例: SQL Server 2008 または SQL Server 2008 R2) を使用して、ノードの削除操作を実行することはできません。 この操作により、コンピューターの状態が破損します。

ノード A のアップグレードを完了するには、次の 2 つのフェーズがあります。

  • フェーズ 1: ノード A でアップグレード前の状態を復元しようとして失敗した後にクリーンアップします。

    1. セットアップ プログラムとエラー ダイアログがまだ閉じていない場合は閉じ、アップグレード プログラムが完了し、アップグレード操作が失敗したことを報告します。

    2. ノード A を可能な所有者リストから削除して、誤ってフェールオーバーを防ぎます。 使用可能な所有者の一覧を変更するには、次の操作を行います。

      1. フェールオーバー ノードでフェールオーバー クラスター マネージャー スナップインを開始します。
      2. [ロール] で、上部のウィンドウでSQL Server フェールオーバー クラスター インスタンスを選択します。
      3. 下部のウィンドウで [ リソース ] をクリックし、[ サーバー名 ] リソースを右クリックし、[プロパティ] を選択 します
      4. [プロパティ] ダイアログ ボックスで [詳細ポリシー] をクリックします。
      5. ノードを追加または削除するには、各ノードに必要なチェック ボックスをオンまたはオフにします。
    3. 次の場所 %Program Files%\Microsoft SQL Server\110\Setup Bootstrap\Log でsummary.txtファイルを開きます。

      summary.txt ファイルで次のトラブルシューティング コマンドを見つけます。setup /q /action=uninstall /instanceid=FOOINST /features=AS

    4. 管理者としてコマンド プロンプトを開き、トラブルシューティング コマンドをSQL Server 2012 セットアップ ファイル (setup.exe) のパスと共使用します。 たとえば、次のようなコマンドを使用します。

      <SQL Server 2012 media path>\setup.exe /q /action=uninstall /instanceid=FOOINST /features=AS

      注:

      • SQL Server 2012 メディア パスは、SQL Server 2012 メディアのパスのプレースホルダーです。
      • このコマンドはサイレントで実行され、通常は 5 分以内に完了します。
      • summary.txt ファイルから コマンド ライン引数をコピーして貼り付け、入力ミスを防ぐことができます。 ただし、この AS 機能は、 summary.txt ファイルで提案されているとおりのパラメーターとして渡す必要があります。 このコマンド (特に instanceid パラメーター) の入力が正しくないと、クリーンアップ操作が失敗し、コンピューターが破損した状態のままになる可能性があります。
      • summary.txt ファイルを確認して、クリーンアップ操作が正常に完了したことを確認します。
  • フェーズ 2: ノード A を SQL Server 2012 にアップグレードする

    1. SQL SERVER 2012 セットアップ メディアを UI モードで開始します。

    2. ランディング ページの [インストール] メニューの [アップグレード] オプションを選択し、[インスタンス構成] ダイアログ ボックスに移動します。

    3. 適切なインスタンス名を選択し、[ インスタンス ID ] フィールドに正しい値を入力します。

      注:

      • フェーズ 1 の例を続けると、インスタンス ID の値は FOOINST です
      • セットアップ プログラムは、インスタンス ID を自動的に決定しません。 そのため、[インスタンス ID] フィールドで既定の事前設定された インスタンス ID を 使用することはできません。
      • summary.txt ファイルを確認して、正しいインスタンス ID を見つけることができます。
    4. アップグレード プロセスを完了します。

    5. ノード A が正常にアップグレードされたら、SQL Server フェールオーバー クラスター インスタンスのサーバー名リソースの所有者リストに追加し直します。

問題が新しいアップグレードに影響を与えないようにする

この問題を回避するには、次のいずれかのオプションを使用します。

  • オプション 1

    1. 多数決しきい値を超えないように、最初にパッシブ ノードの半分以下をアップグレードします。

      注:

      • クラスター ノードの数が偶数の場合は、パッシブ ノードの半分以下をアップグレードします。
      • クラスター ノードの数が奇数の場合は、クラスター内のノードの半分未満をアップグレードしてください。 クラスター内のノードの大部分がアップグレードされている場合、この問題はクラスター リソース グループのフェールオーバー時に発生します。
    2. アップグレードされたパッシブ ノードを、サーバー名リソースの使用可能な所有者リストに手動で追加します。

    3. アップグレードされていないノードを、使用可能な所有者リストから削除します。

    4. SQL Server クラスター グループをアップグレードされたノードのいずれかに手動でフェールオーバーします。

    5. 残りのアップグレードされていないノードをアップグレードします。

    6. アップグレードされていないすべてのノードがアップグレードされたら、手動でサーバー名リソースの使用可能な所有者リストに追加し直します。

  • オプション 2

    この問題は、SQL Server 2012 Service Pack 1 (SP1) で修正されています。 Service Pack のセットアップ プログラム バイナリを使用して、各クラスター ノードでアップグレード プロセスを行うことができます。 これを行うには、2 つの方法があります。

    • メソッド A

      1. SQL Server 2012 SP1 をローカル ハード ディスク (たとえば) にc:\sp1ダウンロードするか、\\share name\sp1すべてのノードからアクセスできるネットワーク共有 (など) にダウンロードします。

      2. 管理者としてコマンド プロンプトを起動し、次のいずれかのコマンドを実行します。

        • <Download path>\setup.exe /action=upgrade /updatesource=c:\sp1
        • <Download path>\setup.exe /action=upgrade /updatesource=\\share name\sp1
      3. セットアップ プログラムのすべての手順を完了します。

        注:

        アップグレードで 2012 SP1 セットアップ バイナリSQL Server使用しているかどうかを確認するには、次の場所にある detail.log ファイルを確認します。%Program Files%\Microsoft SQL Server\110\Setup Bootstrap\Log\<Time stamped folder>

        ログ ファイルの先頭付近にあるバージョン情報に、SQL Server 2012 バージョンが 11.0.2100.60 より後であることを確認します。 たとえば、ログ ファイルには次のものが含まれる場合があります。

    • メソッド B

      1. SQL Server 2012 SP1 をローカル ハード ディスク (たとえば) にc:\sp1ダウンロードするか、\\share name\sp1すべてのノードからアクセスできるネットワーク共有 (など) にダウンロードします。

      2. 管理者としてコマンド プロンプトを起動し、次のコマンドを実行します。

        Download path\SQL Server 2012 Service Pack 1 Package Name.exe/Q
        

        このコマンドは、SQL Server 2012 SP1 セットアップ バイナリを使用してノードにプレパッチを適用します。

        注:

        SqlSupport.msi ファイル自体はインストールできません。これは、SQL Server 2012 セットアップ操作が失敗し、MSVCR100.dll がないというエラーが表示されるためです。 このエラーを回避するには、/Q パラメーターを使用します。 このパラメーターは、 Sqlsupport.msi ファイルと Visual C++ ランタイム コンポーネントの両方をインストールします。

      3. セットアップ プログラムのすべての手順を完了します。

詳細

SQL Server 2012 用 Service Pack 1 をダウンロードする

適用対象

  • SQL Server 2012 Developer
  • SQL Server 2012 Enterprise
  • SQL Server 2012 Express
  • SQL Server 2012 Standard
  • SQL Server 2012 Web
  • SQL Server 2012 Enterprise Core