MultiSubnetFailover パラメーターで AlwaysOn 可用性グループ リスナーを使用すると接続がタイムアウトする

適用先
Windows Server 2008 R2 Service Pack 1 Windows Server 2008 R2 Enterprise Windows Server 2008 R2 Datacenter Windows Server 2008 R2 for Itanium-Based Systems Windows Server 2008 R2 Foundation Windows Server 2008 R2 Standard Windows Server 2008 R2 Web Edition Windows 7 Service Pack 1 Windows 7 Enterprise Windows 7 Home Basic Windows 7 Home Premium Windows 7 Professional Windows 7 Starter Windows 7 Ultimate

現象

クライアント アプリケーションから AlwaysOn 可用性グループ リスナーを介して Microsoft SQL Server 2012 に接続しようとすると、ログオン タイムアウト エラー メッセージが表示されることがあります。

たとえば、SqlCmd コマンドを使用すると、次のエラー メッセージが表示されることがあります。

Sqlcmd: エラー: Microsoft SQL Native Client: ログイン タイムアウトの有効期限が切れています。

[Microsoft][SQL Server Native Client 11.0]サーバー接続を開く遅延のためログイン プロセスを完了できない

SQL Serverに .Net Framework データ プロバイダーを使用して、Microsoft .NET Framework 3.5 ベースまたは Microsoft .NET Framework 4.0 ベースのアプリケーションを使用すると、次のエラー メッセージが表示される場合があります。

タイムアウトが発生しました。 処理が完了する前にタイムアウトの期間が経過したか、サーバーが応答していません。
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
at System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 エラー)
at System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()
at System.Data.SqlClient.TdsParser.ConsumePreLoginHandshake(Boolean encrypt, Boolean trustServerCert, Boolean& marsCapable)
at System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, Boolean withFailover)
at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, SqlConnection owningObject, Boolean withFailover)
at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, TimeoutTimer timeout)
at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, TimeoutTimer timeout, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)

        
注 ログインタイムアウトを 30 秒に増やすと、クライアント アプリケーションの接続に約 20 秒かかります。

これらの症状は、次の条件に該当する場合に発生します。

  • 可用性グループは、マルチサブネットで定義されます。
  • 接続時に MultiSubnetFailover パラメーターを指定しました。
  • クライアント アプリケーション ワークステーションにインストールされているアクティブなトランスポート ドライバー インターフェイス (TDI) フィルター ドライバーがあります。

原因

この問題は、TCP/IP ハンドシェイクの途中で関数が呼び出されると、Tdx.sys ドライバーが Closesocket() 関数を正しく処理しないために発生します。

解決策

修正プログラムの情報

マイクロソフトでは、この問題を修正する修正プログラムを提供しています。 ただし、この修正プログラムは、ここで説明する問題のみを修正することを目的としたものです。 この修正プログラムは、ここで説明する問題が発生しているシステムにのみ適用してください。 この修正プログラムは、今後さらにテストを行う場合があります。 したがって、この問題で深刻な影響を受けていない場合は、この修正プログラムが含まれる次のソフトウェア更新プログラムがリリースされるまで待つことを推奨します。

修正プログラムをダウンロードできる場合は、このサポート技術情報の資料の上部に「修正プログラムのダウンロード」セクションがあります。 このセクションが表示されていない場合は、Microsoft カスタマー サービス & サポート にお問い合わせのうえ、修正プログラムを入手してください。

注: 別の問題が発生した場合、またはトラブルシューティングが必要な場合には、別のサービス リクエストを作成することが必要になる場合があります。 特定の修正プログラムの対象とならない追加の質問および問題については、通常のサポート料金が適用されます。 マイクロソフト カスタマー サービス サポートの電話番号一覧を参照、または別のサービス リクエストを作成するには、次のマイクロソフト Web サイトを参照してください。

http://support.microsoft.com/contactus/?ws=support メモ "修正プログラムのダウンロードが可能" フォームには、修正プログラムを使用できる言語が表示されます。 使用している言語が表示されない場合は、その言語の修正プログラムが存在しないことになります。

前提条件

この修正プログラムを適用するには、Windows 7 SP1 または Windows Server 2008 R2 SP1 が搭載されている必要があります。

Windows 7 または Windows Server 2008 R2 の Service Pack を入手する方法の詳細については、以下のサポート技術情報番号をクリックしてください。

976932 Windows 7 および Windows Server 2008 R2 用 Service Pack 1 に関する情報

レジストリ情報

この hotfix を適用するために、レジストリを変更する必要はありません。

再起動の必要性

この修正プログラムの適用後、コンピューターを再起動する必要があります。

修正プログラムの置き換えに関する情報

この修正プログラムを適用しても、以前にリリースされた修正プログラムが置き換えられることはありません。

ファイル情報

この修正プログラムのグローバル版では、次の表に示す各属性を持つファイル群がインストールされます。 これらのファイルの日付と時刻は世界協定時刻 (UTC) で記載されています。 お使いのコンピューターでは、これらのファイルの日付と時刻は夏時間 (DST) 調整済みのローカル時刻で表示されます。 さらに、ファイルに対して特定の操作を実行すると、日時が変更される場合があります。

Windows 7 および Windows Server 2008 R2 のファイル情報メモ
重要: Windows 7 の修正プログラムと Windows Server 2008 R2 の修正プログラムは、同じパッケージに収められています。 ただし、"修正プログラムの要求" ページの修正プログラムは、両方のオペレーティング システムの下に表示されます。 一方または両方のオペレーティング システムに適用される修正プログラム パッケージを要求するには、ページ上の "Windows 7/Windows Server 2008 R2" の下に表示されている修正プログラムを選択します。 必ず資料の「対象製品」を参照して、各修正プログラムの適用対象である実際のオペレーティング システムを確認してください。

  • 特定の製品、SR_Level (RTM、SPn)、修正プログラム (LDR、GDR) に適用されるファイルは、次の表に示すファイル バージョン番号を調べることで確認できます。

    バージョン 製品 マイルストーン サービス ブランチ
    6.1.760
    1.22xxx
    Windows 7 および Windows Server 2008 R2 SP1 LDR
  • 各環境にインストールされている MANIFEST ファイル (.manifest) および MUM ファイル (.mum) は、「Windows 7 および Windows Server 2008 R2 用の追加ファイル情報」セクションに個別に記載されています。 MUM ファイル、MANIFEST ファイル、および関連するセキュリティ カタログ (.cat) ファイルは、更新されたコンポーネントの状態を維持するために不可欠です。 属性の一覧が表示されていないセキュリティ カタログ ファイルは、Microsoft デジタル署名で署名されています。

サポートされているすべてのバージョンの Windows 7 (x86 ベース)

ファイル名 Tdx.sys
ファイル バージョン 6.1.7601.22382
ファイル サイズ 74,752
日付 (UTC) 2013 年 7 月 12 日
(UTC) のレポート 09:17
プラットフォーム x86

サポートされているすべてのバージョンの Windows 7 および Windows Server 2008 R2 (x64 ベース)

ファイル名 Tdx.sys
ファイル バージョン 6.1.7601.22382
ファイル サイズ 118,272
日付 (UTC) 2013 年 7 月 12 日
(UTC) のレポート 09:35
プラットフォーム x64

サポートされているすべてのバージョンの Windows Server 2008 R2 (IA-64 ベース)

ファイル名 Tdx.sys
ファイル バージョン 6.1.7601.22382
ファイル サイズ 236,544
日付 (UTC) 2013 年 7 月 12 日
(UTC) のレポート 03:09
プラットフォーム IA-64

      

回避策

この問題を回避するには、以下のいずれかの方法を使用します。

  • アプリケーションのログイン タイムアウトを 30 秒に増やします。
  • TDI 機能は、Windows Vista、Windows Server 2008、またはそれ以降のバージョンの Windows では非推奨です。 代わりに、Windows フィルター プラットフォーム (WFP) ベースのドライバーを使用できます。 新しい Windows フィルター プラットフォームを実装する製品のアップグレードに関する情報を要求するには、インストールされている TDI フィルター ドライバーのベンダーに問い合わせてください。 可能な場合は、製品をアップグレードします。
  • Windows フィルター プラットフォームを実装している同等の製品を使用して TDI を交換します。
  • Windows クラスターの可用性グループ リスナー リソースの RegisterAllProvidersIP プロパティを 0 に設定します。 RegisterAllProvidersIP プロパティが 0 に設定されている場合、MultiSubnetFailover パラメーターを指定する必要はありません。 この回避策の詳細については、次の MSDN Web サイトを参照してください。
    可用性グループ リスナーの作成または構成 (SQL Server)

状態

Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。

追加情報

ソフトウェア更新プログラムに関する用語の関連情報を参照するには、以下のサポート技術情報番号をクリックしてください。

824684 Microsoft ソフトウェア更新プログラムの説明に使用される標準用語の説明

この資料に記載されているサードパーティ製品は、マイクロソフトと関連のない他社の製品です。 明示または黙示にかかわらず、これらの製品のパフォーマンスや信頼性についてマイクロソフトはいかなる責任も負わないものとします。

その他のファイル情報

Windows 7 および Windows Server 2008 R2 の追加ファイル情報

サポートされているすべてのバージョンの Windows 7 (x86 ベース) の追加ファイル

ファイル名 X86_2c94e745aaec3431931d51020305e2b9_31bf3856ad364e35_6.1.7601.22382_none_6fcc2f6025233efa.manifest
ファイル バージョン 適用外
ファイル サイズ 702
日付 (UTC) 2013 年 7 月 12 日
(UTC) のレポート 1,726
プラットフォーム 適用外
ファイル名 X86_microsoft-windows-tdi-over-tcpip_31bf3856ad364e35_6.1.7601.22382_none_ec81028053b014a1.manifest
ファイル バージョン 適用外
ファイル サイズ 2,924
日付 (UTC) 2013 年 7 月 12 日
(UTC) のレポート 11:37
プラットフォーム 適用外

サポートされているすべてのバージョンの Windows 7 および Windows Server 2008 R2 (x64 ベース) の追加ファイル

ファイル名 Amd64_fe6f131c914351fbcf6c3bc973329866_31bf3856ad364e35_6.1.7601.22382_none_a8b3dc126d52c78a.manifest
ファイル バージョン 適用外
ファイル サイズ 706
日付 (UTC) 2013 年 7 月 12 日
(UTC) のレポート 1,726
プラットフォーム 適用外
ファイル名 Amd64_microsoft-windows-tdi-over-tcpip_31bf3856ad364e35_6.1.7601.22382_none_489f9e040c0d85d7.manifest
ファイル バージョン 適用外
ファイル サイズ 2,926
日付 (UTC) 2013 年 7 月 12 日
(UTC) のレポート 1,233
プラットフォーム 適用外

サポートされているすべてのバージョンの Windows Server 2008 R2 (IA-64 ベース) の追加ファイル

ファイル名 Ia64_649247023b89e8d48b1a96bffe9b85cd_31bf3856ad364e35_6.1.7601.22382_none_a9a13e5e5a562b37.manifest
ファイル バージョン 適用外
ファイル サイズ 704
日付 (UTC) 2013 年 7 月 12 日
(UTC) のレポート 1,726
プラットフォーム 適用外
ファイル名 Ia64_microsoft-windows-tdi-over-tcpip_31bf3856ad364e35_6.1.7601.22382_none_ec82a67653ae1d9d.manifest
ファイル バージョン 適用外
ファイル サイズ 2,925
日付 (UTC) 2013 年 7 月 12 日
(UTC) のレポート 11:35
プラットフォーム 適用外