Sybase ASE正在终止此过程。写入套接字时连接已死亡

时间:2016-03-10 02:07:58

标签: sockets ado.net sybase-ase

在Sybase中,我们间歇性例外,如

System.Data.OleDb.OleDbException (0x80004005): [08S01]
[ASEOLEDB]ASE is terminating this process.
   at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)
   at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForMultpleResults(tagDBPARAMS dbParams, Object& executeResult)
   at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
   at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
   at System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior)

System.Data.OleDb.OleDbException (0x80004005): [08S01]
[ASEOLEDB]Sybase  Connection died while writing to socket. Socket returned error code 10053.
at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)
   at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForMultpleResults(tagDBPARAMS dbParams, Object& executeResult)
   at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
   at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
   at System.Data.OleDb.OleDbCommand.ExecuteNonQuery()

表格中的记录数量少于200K,查询通常为inline insertsselect with temporary tables

断开连接后,我们需要回收线程或退回流程。

我们是否需要在Sybase配置结束时进行更改?或者在申请过程中?

3 个答案:

答案 0 :(得分:0)

这可能是ASE服务器端的问题。查看ASE错误日志文件,应该有一个堆栈跟踪,其中包含有关进程终止原因的线索。根据您在那里找到的内容,您可能需要联系TechSupport并获取最新的补丁,或者增加某些ASE配置设置也可能有所帮助。

答案 1 :(得分:0)

当连接成为死锁情况的受害者时,我通常会看到此错误。如果是这种情况,它应该在ASE错误日志中。

答案 2 :(得分:0)

这里我们有一个通用的WinSock" 10053"从.net(ASE,Oledb等)客户端调用DB的操作系统显示的错误代码。

您可能在ASE错误日志中找不到任何内容(除非您激活特定的用户跟踪),因为服务器正在以标准方式关闭连接,而Sybase客户端软件已缓存其请求并仍在编写到Windows套接字(顺便说一句,是的,这是一个错误/问题:您可以搜索有关EBF和软件维护的最新信息或打开新的支持请求。)

我在创建临时表时遇到此问题(来自.Net ASE Client dll):可能的原因是如果连接返回到连接池,本地临时表会被丢弃(实际上错误是在第一次试验中每天出席)。我已尝试turning off连接字符串中的连接池,这对我有用。

    Data Source=myASEsrv;Port=nnnn;Database=myDB;Uid=myUsr;Pwd=myPswd;Pooling=False;