現在オフラインです。再接続するためにインターネットの接続を待っています

SQL Server がリッスンしている TCP/IP ポートが別のアプリケーションで使用されていると、そのポートに SQL Server がバインドできない

現象
重要 : この資料には、レジストリの編集方法が記載されています。万一に備えて、編集の前には必ずレジストリをバックアップし、レジストリの復元方法を理解しておいてください。バックアップ、復元、および編集方法の詳細を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
256986 Microsoft Windows レジストリの説明
SQL 仮想サーバーを別のノードにフェールオーバーしてから元のノードにフェールバックすると、SQL 仮想サーバーがリッスンしているポートへのバインドが失敗することがあります。このため、SQL 仮想サーバーでは、TCP/IP での着信接続の受け付けにも失敗します。この種類のエラーが発生すると、次のエラー メッセージが SQL Server のエラー ログに記録されます。

2000-06-26 09:54:10.72 server SuperSocket 情報 : TCP ポート 1433 でバインドに失敗しました。
2000-06-26 09:54:10.74 server SQL Server は Named Pipes で受信を待っています。
2000-06-26 09:54:10.74 server SQL Server はクライアント接続できます。
: この現象は、クラスタ化されていない SQL Server 2000 コンピュータ、および SQL Server 2005 コンピュータでも発生する可能性があります。
原因
SQL Server がリッスンしているポートの制御を取得する、別のアプリケーションがコンピュータ上で実行されています。この事例では、ポートは TCP ポート 1433 です。この問題は、TCP/IP クライアントの負荷が大きい状況でも発生します。

この現象には、別の原因が存在する可能性があります。この資料の回避策を使用しても問題が解決しない場合は、以下の「サポート技術情報」 (Microsoft Knowledge Base) の資料を参照してください。
293107 [PRB] TCP/IP ポートが別のアプリケーションによって使用される
319578 SQL Server のフェールオーバー クラスタ ノードの IP アドレスを変更するとエラー メッセージ "バインドに失敗しました" が表示される
312935 [FIX] SQL Server の起動時に TCP/IP ポートにバインドできない
308091 [BUG] SQL Server 2000 のインスタンスが複数ある場合、[サーバーを非表示] を使用できない
回避策
警告 : レジストリ エディタまたは別の方法を使用してレジストリを誤って変更すると、深刻な問題が発生することがあります。最悪の場合、オペレーティング システムの再インストールが必要になることがあります。マイクロソフトは、レジストリの変更により発生した問題に関しては、一切責任を負わないものとします。レジストリの変更は、自己の責任において行ってください。

この問題を回避するには、特定のインスタンスに対応する MSSQLServer のレジストリ キーに
SuperSocketNetlib\Tcp\TcpAbortiveClose
の値を追加します。これを行うには、以下の手順を実行します。
  1. コマンド ラインから、レジストリ エディタ (Regedt32.exe) を起動します。
  2. レジストリで次のキーを見つけてクリックします。
    • SQL Server 2000 の場合
      HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\MSSQLServer\SuperSocketNetlib\Tcp
    • SQL Server 2005 の場合
      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.x\MSSQLServer\SuperSocketNetLib\Tcp\


      : MSSQL.x の部分は、使用しているシステムに対応する値に置き換えてください。MSSQL.x に対応する値は、次のレジストリ サブキーにある
      MSSQLSERVER
      レジストリ エントリの値から見つけることができます。
      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL\
  3. [編集] メニューの [新規] をポイントし、[DWORD 値] をクリックします。
  4. TcpAbortiveClose と入力し、Enter キーを押します。
  5. [編集] メニューの [修正] (または [変更]) をクリックします。
  6. [10 進] をクリックし、[値のデータ] ボックスに 1 と入力します。
  7. レジストリ エディタを終了します。
: SQL Server 2000 インスタンスで、レジストリ キーが作成済みで 1 に設定されている場合、インスタンスの移行時に SQL Server 2005 の場所に移行されます。
詳細
関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
286303 動的ポート検出時の SQL Server 2000 ネットワーク ライブラリの動作
293107 [PRB] TCP/IP ポートが別のアプリケーションによって使用される
プロパティ

文書番号:307197 - 最終更新日: 03/24/2006 08:07:57 - リビジョン: 8.4

Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition

  • kbprb KB307197
フィードバック