J
Joe Ross
I've been working with Microsoft support for over 3 weeks now on an
intermittent General Network Error we're seeing in our production
environment between our ASP.NET application and SQL Server 2000. They are
continuing to work on the issue, but it seems as if our progress is grinding
to a halt. I asked this question on the newsgroups before going to MS but
figured I'd give it another shot now that I have more information.
The problem occurs intermittently (maybe 10 to 15 times per day). It seems
to be related to queries that return "large" amounts of data from SQL. The
problem started after we made an equipment change. We went from a single
server hosting both our ASP.NET application and SQL Server 2000, to one
server hosting IIS and another machine running SQL. An example of the
exception thrown appears at the bottom of this post.
MS had us perform 3 data captures initially: MPSRPT_MDAC on the IIS machine,
MPSRPT_MDAC on the SQL machine, and SQLDIAG on the database server. The MS
rep found nothing too out of the ordinary with our configuration, so he
asked me to do a network capture on both machines while the error occurred.
I was able to get a good capture in a small window and sent it off to MS.
The verdict is that IIS is basically halting the request. It is resetting
the database connection partway through retrieving the results of the stored
proc. IIS attempts to close the connection for some reason, SQL ignores and
keeps pumping back data, then IIS raises a reset. MS confirmed that there
is no packet loss. MS has not determined why this is happening and has not
advised me to capture any additional data.
If someone has any ideas, I am willing to provide as much detail as
possible. I wanted to keep this initial post as concise as possible.
Thanks for any assistance you can provide,
-joe
EXCEPTION:
System.Data.SqlClient.SqlException: General network error. Check your
network documentation.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception,
TdsParserState state)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException
exception, TdsParserState state)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
at System.Data.SqlClient.TdsParser.ReadNetlib(Int32 bytesExpected)
at System.Data.SqlClient.TdsParser.ReadBuffer()
at System.Data.SqlClient.TdsParser.ReadByteArray(Byte[] buff, Int32
offset, Int32 len)
at System.Data.SqlClient.TdsParser.ReadEncodingChar(Int32 length,
Encoding encoding)
at System.Data.SqlClient.TdsParser.ReadSqlValue(_SqlMetaData md, Int32
length)
at System.Data.SqlClient.TdsParser.ProcessRow(_SqlMetaData[] columns,
Object[] buffer, Int32[] map, Boolean useSQLTypes)
at System.Data.SqlClient.SqlDataReader.PrepareSQLRecord(Int32 i)
at System.Data.SqlClient.SqlDataReader.GetSqlString(Int32 i)
at System.Data.SqlClient.SqlDataReader.GetString(Int32 i)
intermittent General Network Error we're seeing in our production
environment between our ASP.NET application and SQL Server 2000. They are
continuing to work on the issue, but it seems as if our progress is grinding
to a halt. I asked this question on the newsgroups before going to MS but
figured I'd give it another shot now that I have more information.
The problem occurs intermittently (maybe 10 to 15 times per day). It seems
to be related to queries that return "large" amounts of data from SQL. The
problem started after we made an equipment change. We went from a single
server hosting both our ASP.NET application and SQL Server 2000, to one
server hosting IIS and another machine running SQL. An example of the
exception thrown appears at the bottom of this post.
MS had us perform 3 data captures initially: MPSRPT_MDAC on the IIS machine,
MPSRPT_MDAC on the SQL machine, and SQLDIAG on the database server. The MS
rep found nothing too out of the ordinary with our configuration, so he
asked me to do a network capture on both machines while the error occurred.
I was able to get a good capture in a small window and sent it off to MS.
The verdict is that IIS is basically halting the request. It is resetting
the database connection partway through retrieving the results of the stored
proc. IIS attempts to close the connection for some reason, SQL ignores and
keeps pumping back data, then IIS raises a reset. MS confirmed that there
is no packet loss. MS has not determined why this is happening and has not
advised me to capture any additional data.
If someone has any ideas, I am willing to provide as much detail as
possible. I wanted to keep this initial post as concise as possible.
Thanks for any assistance you can provide,
-joe
EXCEPTION:
System.Data.SqlClient.SqlException: General network error. Check your
network documentation.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception,
TdsParserState state)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException
exception, TdsParserState state)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
at System.Data.SqlClient.TdsParser.ReadNetlib(Int32 bytesExpected)
at System.Data.SqlClient.TdsParser.ReadBuffer()
at System.Data.SqlClient.TdsParser.ReadByteArray(Byte[] buff, Int32
offset, Int32 len)
at System.Data.SqlClient.TdsParser.ReadEncodingChar(Int32 length,
Encoding encoding)
at System.Data.SqlClient.TdsParser.ReadSqlValue(_SqlMetaData md, Int32
length)
at System.Data.SqlClient.TdsParser.ProcessRow(_SqlMetaData[] columns,
Object[] buffer, Int32[] map, Boolean useSQLTypes)
at System.Data.SqlClient.SqlDataReader.PrepareSQLRecord(Int32 i)
at System.Data.SqlClient.SqlDataReader.GetSqlString(Int32 i)
at System.Data.SqlClient.SqlDataReader.GetString(Int32 i)