クラスター ノードを 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 でアップグレード前の状態を復元しようとして失敗した後にクリーンアップします。
セットアップ プログラムとエラー ダイアログがまだ閉じていない場合は閉じ、アップグレード プログラムが完了し、アップグレード操作が失敗したことを報告します。
ノード A を可能な所有者リストから削除して、誤ってフェールオーバーを防ぎます。 使用可能な所有者の一覧を変更するには、次の操作を行います。
- フェールオーバー ノードでフェールオーバー クラスター マネージャー スナップインを開始します。
- [ロール] で、上部のウィンドウでSQL Server フェールオーバー クラスター インスタンスを選択します。
- 下部のウィンドウで [ リソース ] をクリックし、[ サーバー名 ] リソースを右クリックし、[プロパティ] を選択 します。
- [プロパティ] ダイアログ ボックスで [詳細ポリシー] をクリックします。
- ノードを追加または削除するには、各ノードに必要なチェック ボックスをオンまたはオフにします。
次の場所 %Program Files%\Microsoft SQL Server\110\Setup Bootstrap\Log でsummary.txtファイルを開きます。
summary.txt ファイルで次のトラブルシューティング コマンドを見つけます。
setup /q /action=uninstall /instanceid=FOOINST /features=AS
管理者としてコマンド プロンプトを開き、トラブルシューティング コマンドを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 にアップグレードする
SQL SERVER 2012 セットアップ メディアを UI モードで開始します。
ランディング ページの [インストール] メニューの [アップグレード] オプションを選択し、[インスタンス構成] ダイアログ ボックスに移動します。
適切なインスタンス名を選択し、[ インスタンス ID ] フィールドに正しい値を入力します。
注:
- フェーズ 1 の例を続けると、インスタンス ID の値は FOOINST です。
- セットアップ プログラムは、インスタンス ID を自動的に決定しません。 そのため、[インスタンス ID] フィールドで既定の事前設定された インスタンス ID を 使用することはできません。
- summary.txt ファイルを確認して、正しいインスタンス ID を見つけることができます。
アップグレード プロセスを完了します。
ノード A が正常にアップグレードされたら、SQL Server フェールオーバー クラスター インスタンスのサーバー名リソースの所有者リストに追加し直します。
問題が新しいアップグレードに影響を与えないようにする
この問題を回避するには、次のいずれかのオプションを使用します。
オプション 1
多数決しきい値を超えないように、最初にパッシブ ノードの半分以下をアップグレードします。
注:
- クラスター ノードの数が偶数の場合は、パッシブ ノードの半分以下をアップグレードします。
- クラスター ノードの数が奇数の場合は、クラスター内のノードの半分未満をアップグレードしてください。 クラスター内のノードの大部分がアップグレードされている場合、この問題はクラスター リソース グループのフェールオーバー時に発生します。
アップグレードされたパッシブ ノードを、サーバー名リソースの使用可能な所有者リストに手動で追加します。
アップグレードされていないノードを、使用可能な所有者リストから削除します。
SQL Server クラスター グループをアップグレードされたノードのいずれかに手動でフェールオーバーします。
残りのアップグレードされていないノードをアップグレードします。
アップグレードされていないすべてのノードがアップグレードされたら、手動でサーバー名リソースの使用可能な所有者リストに追加し直します。
オプション 2
この問題は、SQL Server 2012 Service Pack 1 (SP1) で修正されています。 Service Pack のセットアップ プログラム バイナリを使用して、各クラスター ノードでアップグレード プロセスを行うことができます。 これを行うには、2 つの方法があります。
メソッド A
SQL Server 2012 SP1 をローカル ハード ディスク (たとえば) に
c:\sp1
ダウンロードするか、\\share name\sp1
すべてのノードからアクセスできるネットワーク共有 (など) にダウンロードします。管理者としてコマンド プロンプトを起動し、次のいずれかのコマンドを実行します。
<Download path>\setup.exe /action=upgrade /updatesource=c:\sp1
<Download path>\setup.exe /action=upgrade /updatesource=\\share name\sp1
セットアップ プログラムのすべての手順を完了します。
注:
アップグレードで 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
SQL Server 2012 SP1 をローカル ハード ディスク (たとえば) に
c:\sp1
ダウンロードするか、\\share name\sp1
すべてのノードからアクセスできるネットワーク共有 (など) にダウンロードします。管理者としてコマンド プロンプトを起動し、次のコマンドを実行します。
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++ ランタイム コンポーネントの両方をインストールします。セットアップ プログラムのすべての手順を完了します。
詳細
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
フィードバック
https://aka.ms/ContentUserFeedback.
Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see:フィードバックの送信と表示