Microsoft KB Archive/307197

From BetaArchive Wiki
Knowledge Base


SQL Server cannot bind to the TCP/IP port on which SQL Server is listening when the TCP\IP port is used by another application

Article ID: 307197

Article Last Modified on 2/28/2006



APPLIES TO

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



This article was previously published under Q307197

SYMPTOMS

Important This article contains information about how to modify the registry. Make sure to back up the registry before you modify it. Make sure that you know how to restore the registry if a problem occurs. For more information about how to back up, restore, and modify the registry, click the following article number to view the article in the Microsoft Knowledge Base:

256986 Description of the Microsoft Windows registry


When you fail over the SQL Virtual Server to another node and then fail back to the original node, SQL Virtual Server sometimes fails to bind to the port on which it is listening. SQL Virtual Server then also fails to accept incoming connections on TCP/IP. When this type of failure occurs, the following error messages are logged in the SQL Server error logs:


2000-06-26 09:54:10.72 server SuperSocket Info: Bind failed on TCP port 1433.
2000-06-26 09:54:10.74 server SQL server listening on Named Pipes.
2000-06-26 09:54:10.74 server SQL Server is ready for client connections

Note This behavior may also occur on non-clustered SQL Server 2000 computers, and on SQL Server 2005 computers.

CAUSE

There is another application that is running on the computer, which takes control of the port on which SQL Server is listening. In this case, the port is TCP port 1433. The problem also occurs in situations where there is a heavy TCP/IP client load.

This behavior has other potential causes. If the workaround in this article does not resolve the problem, see the following articles in the Microsoft Knowledge Base:

293107 TCP\IP port in use by another application


319578 Error message when you change the IP address on a SQL Server failover cluster node: "Bind failed"


312935 FIX: SQL Server fails to bind TCP/IP port at startup


308091 BUG: Hide Server option cannot be used on multiple instances of SQL Server 2000


WORKAROUND

Warning Serious problems might occur if you modify the registry incorrectly by using Registry Editor or by using another method. These problems might require that you reinstall your operating system. Microsoft cannot guarantee that these problems can be solved. Modify the registry at your own risk.

To work around this problem, add a SuperSocketNetlib\Tcp\TcpAbortiveClose value in the registry key for the MSSQLServer for the particular instance. To do this, follow these steps:

  1. Start Registry Editor (Regedt32.exe) from the command line.
  2. Locate, and then click the following key in the registry:
    • 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\

Note MSSQL.x is a placeholder for the corresponding value for your system, you can locate MSSQL.x from the value of the MSSQLSERVER registry entry in the following registry subkey.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL\

  1. On the Edit menu, point to New, and then click DWORD Value.
  2. Type TcpAbortiveClose, and then press ENTER.
  3. On the Edit menu, click Modify.
  4. Click Decimal, and then type 1 in the Value data field.
  5. Quit Registry Editor.

Note If the registry key has been created and set to 1 in a SQL Server 2000 instance, it will migrate to the SQL Server 2005 location during instance migration.

MORE INFORMATION

For more information, click the following article number to view the article in the Microsoft Knowledge Base:

286303 Behavior of SQL Server 2000 network library during dynamic port detection


293107 TCP\IP port in use by another application


Keywords: kbprb KB307197