INF: Multiple Named Pipes Connections May Cause Error 17832ID: Q165189
|
When SQL Server receives many simultaneous Named Pipes connection requests,
some connection requests may fail if the pipe is busy. In the SQL Server
error log, multiple "17832 Unable to read login packet" errors are
typically logged. On the client side, error 231 "connection busy" or "pipe
busy" may be generated.
These errors may be generated when a client connection tries to open a pipe
and there is no pipe instance available to service the next pipe open
request. This is an expected behavior in an environment where SQL Server is
hit by numerous simultaneous connection requests, as in the case of
Microsoft Internet Information Server (IIS).
However, this behavior does not prevent you from implementing very large
multi-user systems. In fact, Microsoft SQL Server is used in production
with over 4,000 concurrent users connecting by means of named pipes to a
single server.
There is only one thread that handles incoming SQL Server Named Pipes
connection open requests. In an environment where multiple simultaneous
named pipes connection requests are issued, it is very likely that no pipe
instance is available to service the next pipe open request at any
particular moment. In this case, a pipe busy status is returned to the
client and the client retries the connection within the specified
timeout period until the pipe is available. From a network sniffer trace,
on the Windows NT Server Create response, error code (172)
STATUS_PIPE_NOT_AVAILABLE is returned to the client. In case of a 16-bit
client connection, code (231) ERROR_PIPE_BUSY is returned to the client.
In this situation, DB-Library and the ODBC driver issue a retry mechanism
that retries after a delay that varies from 200 ms up to one second. The
client may successfully connect during one of the retries, but it may also
fail if the connection keeps receiving a pipe busy status in all the
retries for the duration of the logon timeout value that is set on the
client.
The "17832 Unable to read login packet" errors are more noticeable if you
have an ODBC front end application. This error is generated because the
initial session between the client and the server has been established but
the client timed out before the login packet was sent to the server.
The following suggestions can help reduce the occurrences of these errors:
Software\Microsoft\MSSQLServer\MSSQLServer
SSNMPN60,\\.\pipe\sql1\query
SSNMPN60,\\.\pipe\sql2\query
Server: <server name>
DLL name: DBNMPNTW
connection string: \\<server name>\pipe\sql1\query
In case of 16-bit tools, the DLL name should be DBNMP3.
Q154628 : INF: SQL Log 17832 With Multiple TCP/IP Connection Requests.
Keywords : kbnetwork kbusage SSrvDB_Lib SSrvNet_Lib
Version : 6.0 6.5
Platform : WINDOWS
Issue type : kbinfo
Last Reviewed: April 9, 1999