Monday, March 26, 2012

Intermittent connection timeout / general network error

We have a SQL 2005

clustered server (Microsoft Cluster Services) that is queried from 4 IIS6

Windows Server 2003 frontends. Each frontend runs both classic ASP apps

connection with SQL Server ODBC and .NET2 apps connecting with

System.Data.SqlClient. Ocassionaly we get a string of errors/timeouts opening a

connection lasting maybe 2 minutes.

One the classic ASP

apps we log one of these two errors:

Microsoft OLE DB Provider for ODBC

Drivers (0x80004005)
[Microsoft][ODBC SQL Server

Driver][DBNETLIB]General network error. Check your network

documentation

or


Microsoft OLE DB Provider for

ODBC Drivers (0x80004005)
[Microsoft][ODBC SQL Server

Driver]Timeout expired

on the

ADODB.Connection.Open

On the .NET2 apps we

log

Message Timeout expired. The timeout

period elapsed prior to completion of the operation or the server is not

responding.

StackTrace at

System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection

owningObject)
at

System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection

owningConnection)
at

System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection

outerConnection, DbConnectionFactory connectionFactory)
at

System.Data.SqlClient.SqlConnection.Open()
at

System.Web.SessionState.SqlSessionStateStore.SqlStateConnection..ctor(SqlPartitionInfo

sqlPartitionInfo)

Source .Net SqlClient Data Provider

Any ideas for further debugging?

What does your connection string look like? Please try add "Connect Timeout=120" or "Connection Timeout = 120" in it, and see wether the problems go away.

Thanks!

Ming.

|||<add name="default" connectionString="Data Source=server;Initial Catalog=db;Integrated Security=False; uid=user; password=pw" providerName="System.Data.SqlClient"/>

for .NET via TCP/IP

The regular ASP websites are having problems as well though using ODBC.

Upping the timeout seems like a band-aid at best and may lead to connections piling up and making the situation worse. There isn't a good reason for communication between the frontends and db server over a private Gigabit link to take over 30 seconds to connect.|||You can use your HOSTS file to define the servername-IP address combination to resolve DNS names. If you have a DNS server, define this in your DNS server. Try a simple test. Try installing any SQL Server client tool(Query Analyzer, Enterprise Manager, etc) on the server running your .NET app. Connect to your database server using this client tool. If it takes more than 5 seconds to connect, there's something wrong with your network|||

Did you get an answer for this?

we are facign similar issues.

We have 4 way cluster sql server 2005 on SP2

|||No I haven't had any answers. The problem is definitely more pronounced during heavier traffic so I wasn't able to debug much during the lull during the summer.

|||We have a similar issue with our Clustered SQL Server 2005. We are seein it a lot in a VB 6 executable, but I have gotten the errors in Server Management Studio, too. We get one of two errors:
Timeout expired
or
[DBNETLIB][ConnectionOpen (Connect()).]SQL Server does not exist or access denied.

We have run Sysinternals Process Monitor on a PC that receives these errors and have seen a NAME NOT FOUND result on queryopen operation for CLUSAPI.DLL, RESUTILS.DLL and ntdsapi.dll. The path it is looking in is the application path C:\Program Files\ROAS. These DLLs don't exist in this folder, but do exist in C:\Windows\System32.

The first two are MS Clustering DLLS and i asume with a name like ntdsapi the other is a server OS DLL.

No comments:

Post a Comment