在从服务器接收结果时发生传输级错误。 (provider: TCP Provider, error: 0 - 指定的网络名不再可用。)

狂放不羁 2014-01-25 03:27:45
是远程访问,程序运行一段时间后就出现这个错误,请大家帮忙分析,谢谢。问题得到解决仅有的100分都给你们。
信息:SqlException
在从服务器接收结果时发生传输级错误。 (provider: TCP Provider, error: 0 - 指定的网络名不再可用。)
在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
在 System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error)
在 System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj)
在 System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()
在 System.Data.SqlClient.TdsParserStateObject.ReadBuffer()
在 System.Data.SqlClient.TdsParserStateObject.ReadByte()
在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
在 System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
在 System.Data.SqlClient.SqlDataReader.get_MetaData()
在 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
在 System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
在 System.Data.SqlClient.SqlCommand.ExecuteReader()
在 CloudLocationCSharp.CRDBOperator.selectCentIDCard()
在 CloudLocationCSharp.CLEntry.getCentId()
在 CloudLocationCSharp.CLEntry..ctor()
在 CorrespondObject.MessInfo.getFromDB() 位置 C:\code\GPRSBridgingSys\CorrespondObject\MessInfo.cs:行号 97
.Net SqlClient Data Provider
...全文
23760 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Archer9527 2016-03-11
  • 打赏
  • 举报
回复
楼主可以看下是不是SqlDataReader读取数据后没有使用SqlDataReader.Close()关闭掉,我之前遇到过这种情况,报错的同时发现程序占内存越来越多,而且是周期性出现,所以就怀疑是不是什么数据满了没释放,最后发现是这个SqlDataReader要Close
q1097306512 2015-11-20
  • 打赏
  • 举报
回复
说一下我的情况,仅仅是sqlconnetion打开之后忘记关闭了,关闭之后就好了
最终的阿瓦隆 2014-10-29
  • 打赏
  • 举报
回复
最近我也遇到了这种问题。如楼上所说,我在高并发线程下,平凡的打开关闭数据库,尤其是数据还没有返回,请求又过去了,会导致类似网络阻塞,然后就会报这个错了。 我只能用异常捕捉处理掉了。 一般在正常的网络环境中应该出现的概率还是比较小。
_小黑_ 2014-07-01
  • 打赏
  • 举报
回复
我也遇到这个问题了 跟你的情况是一样的所以我想问一下 你是怎么处理的
_小黑_ 2014-07-01
  • 打赏
  • 举报
回复
楼主 你的这个问题 是怎么处理的啊 能说一下吗
發糞塗牆 2014-01-26
  • 打赏
  • 举报
回复
在没有深入研究你这个问题之前,先说说我常见的问题,上次搞镜像(sqlserver高可用之一),报错就类似这个,问了一下网管,由于是金融系统,需要符合PCI认证要求,所以网络做了一定程度的限制,最后我把hosts文件改了一下就可以用了。按照你的情景,应该是程序认不到你的sqlserver服务所在的机器名或者sqlserver实例名
LongRui888 2014-01-25
  • 打赏
  • 举报
回复
引用 4 楼 Fergal1204653510 的回复:
谢谢 楼上朋友 这个问题 大多数人也说是网络问题,尤其是我们平凡访问 打开 关闭 打开 有关闭。。。那我程序中应该在个处理呢 是否我让他没连接成功就一直连接 知道成功为止 还是异常处理? 总不至于让程序因为这个错误崩溃吧
应该是需要异常处理的。
狂放不羁 2014-01-25
  • 打赏
  • 举报
回复
谢谢 楼上朋友 这个问题 大多数人也说是网络问题,尤其是我们平凡访问 打开 关闭 打开 有关闭。。。那我程序中应该在个处理呢 是否我让他没连接成功就一直连接 知道成功为止 还是异常处理? 总不至于让程序因为这个错误崩溃吧
LongRui888 2014-01-25
  • 打赏
  • 举报
回复
之前在论坛,也有几次有网友遇到这类问题。 传输级错误,就是Tds类错误,也就是表格数据流协议,是建立在TCP/IP Net-Library之上的,包含在TCP数据段内。TDS用1433端口进行数据库通信。 TDS客户端使用称为表格格式数据流 (TDS) 的 SQL Server 专用应用程序级协议来发送 SQL 语句。 大致的过程: 数据包由用于 SQL Server 的 Microsoft OLE DB 提供程序、SQL Server ODBC 驱动程序或 DB-Library DLL 生成。TDS 数据包然后被传递给 SQL Server 客户端 Net-Library,客户端 Net-Library 将 TDS 数据包封装为网络协议数据包。 在服务器上,服务器 Net-Library 接收网络协议数据包,且析取 TDS 数据包并将其传递给关系数据库服务器。在将结果返回给客户端时,这一进程反向执行。 从上面也可以看出,这个应该是属于sql server底层所使用的一种通信协议,这里涉及到了:sql server的进程、网络、net-library,所以:如果一旦网络有不稳定或者断网了,异或,sql server进程出现了问题,再或者这个net-library有bug,那么可能就会导致这个传输级错误了。 从返回的错误信息中: 在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) 在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) 应该是数据库连接也有问题,所以就很有可能是断网了,或者网络很不稳定导致的。
LongRui888 2014-01-25
  • 打赏
  • 举报
回复
另外,试试如下的解决方法: 重启数据库服务器 以及 数据库的sqlserver服务,并确保数据库链接字符串的正确有效,保持链接畅通
LongRui888 2014-01-25
  • 打赏
  • 举报
回复
分析其主要原因是“连接断开”,以下列出几种相关原因案例: 1、网络未连接,或者在连接的时候断网; 2、连接实例的时候sqlserver突然断了,比如你在使用的时候sqlserver服务不正常关闭等。 3、数据库有异常,比如数据库处于“警告”等的状态,或者数据库处于受限访问状态。也会无法访问,这种情况比较常见。

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧