SQL Server 2005 以降のクラスターのインストールではセットアップ時に以下のようなインストール前の検証が行われます。
# 以下は SQL Server 2008 R2 November CTP の内容です。
?
[ネットワーク バインド順序] 以外のルールはすべて [合格] にできるのですが、環境によっては [ネットワーク バインド順序] だけが
[警告] になってしまうという現象がまれに発生していました。
今回の環境では、[Public] というドメインのネットワークと、[Private] というクラスタの内部通信用のネットワークの 2 種類を用意しています。
ネットワークのアクセス順序に関しては、[Public] [Private] という順番にしてあり、優先順位としては [Public] のほうが高い設定となっています。
ドメイン ネットワークのほうが、優先順位高いのですが、この警告が発生するんですよね。
[Public] と [Private] の順序を変更すると警告が消えることがあります。
# あくまでも警告のレベルなので、インストールは継続することができ動作的にも特に問題はないのですが。
今日の午前中に、英語版の SQL Server 2008 R2 RTM の Enterprise Evaluation をインストールしていて同様の現象が発生し、
そういえばこの間この現象について、英語の情報があったな~と思い対応方法をまとめてみました。
■参考にした情報
この現象の解決には、以下のサイトの情報を参考にさせていただきました。
Network Binding Order Rule Warning in SQL Server 2008 Cluster Setup Explained
このチェックに関しては、[アダプターとバインド] で設定する順序だけでなく、レジストリの設定も関係しているようですね。
■対応方法
- ネットワークアダプタの順序の設定
ネットワークアダプタの順序に関しては、[ネットワーク] の [プロパティ] を開いて、
[詳細設定] → [詳細設定] から変更することができます。
# Windows Server 2008 以降はメニューバーが表示されないので、[Alt] を押してメニューバーを表示します。 - ゴーストデバイスが存在していないかの確認
NIC のゴーストデバイスが残っていないかを確認するのもポイントのようですね。
以下の KB はWindows 2000 Server 用の技術情報になりますが、2008 / R2 でも同様の操作で表示することが可能です。
Windows 2000 に現在存在しないデバイスがデバイス マネージャに表示されないいつまでたっても、
set devmgr_show_nonpresent_devices=1
cd%SystemRoot%System32
start devmgmt.mscが覚えられないです…。
上記コマンドを実行すると [非表示のデバイスの表示] を有効にした際に、ゴーストデバイスが表示できるようになりますので、
[ネットワーク アダプター] に薄い文字で表示されているデバイスがないかを確認します。
今回の環境ではゴーストデバイスは存在していないために表示されていません。
# 薄い文字で表示されているものが接続されていないがアダプターとしては残っているゴーストデバイスになります。
- レジストリの設定変更
多くの場合は、このレジストリ値のの設定が起因して警告が表示されているような気がします。[HKLMSYSTEMCurrentControlSetServicesTcpipLinkage] に [Bind] という [REG_MULTI_SZ] の設定があります。
?SQL Server のクラスターのインストールでは、この値の順序もアダプタのバインド順序として認識されているようです。
このままでは、どの値がどのアダプターを指しているかわからないのでコマンドプロンプトで、[WMIC] を使ってアダプターと値の関連を調べます。
wmic nicconfig get description, SettingID そうすると以下のような結果が取得できます。
WAN Miniport (SSTP)??????????????????????????????????????? {4AE6B55C-6DD6-427D-A5BB-13535D4BE926}
WAN Miniport (IKEv2)?????????????????????????????????????? {DBD85EFC-7CFA-4A38-90A3-4803A40BF61E}
WAN Miniport (L2TP)??????????????????????????????????????? {66973E50-CF44-46A7-AD86-0F369D30ACA2}
WAN Miniport (PPTP)??????????????????????????????????????? {F93EB786-8968-43C5-BC58-54D87385060E}
WAN Miniport (PPPOE)?????????????????????????????????????? {6A16EDEB-24DF-416A-B427-CED88EFCA006}
WAN Miniport (IPv6)??????????????????????????????????????? {F4373218-ED19-4F3D-8DB4-982009ED86B7}
WAN Miniport (Network Monitor)???????????????????????????? {5356FE17-48EE-4A7A-BECE-645E20060A52}
Microsoft Virtual Machine バス ネットワーク アダプター???? {80A41E42-ED0F-4584-860F-F03808F2D520}
WAN Miniport (IP)????????????????????????????????????????? {66513FCE-F1B9-480C-B278-3DD588D5D452}
Microsoft Virtual Machine バス ネットワーク アダプター #2? {B14AF60C-B406-4890-9D27-0D7034D634AD}
RAS Async Adapter????????????????????????????????????????? {DD2F4800-0DEB-4A98-A302-0777CB955DC1}
Microsoft Failover Cluster Virtual Adapter???????????????? {64D317B9-D0D5-4AAB-9D1F-8D8BA9E5A1E3}今回は、[Public] が [#2] のアダプタを使っているので、[{B14AF60C~}] の値が、ドメイン ネットワークになりますね。
それではレジストリの値を変更して、Public のネットワークを先頭に設定します。
# ついでに、[Private] を 2 番に設定しています。Public が先頭にあれば、警告は表示されないようになるためこれは必須ではありません。
以上で設定は終了です。
SQL Server のインストーラーの検証を再実行してみます。
# 設定変更後にサーバーの再起動はしていません。
すべての検証が [合格] になりました。
ファイアウォールはすべてを合格にするために機能自体を無効にしているので、本来は [Windows ファイアウォール] だけが警告になるのが正しいと思いますが。
?
ネットワークのプロパティからの設定だけでなく、レジストリの変更をしないと警告が回避できないのでちょっとわかりずらいですね。