2016-03-10 5 views
0

В Sybase, мы прерывистый исключение какSybase ASE завершает этот процесс. Соединение умер во время записи в сокет

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 inserts или select with temporary tables

После отсоединения нам необходимо переработать нить или отскочить процесс.

Нужно ли нам менять конфигурацию Sybase? Или внутри процесса подачи заявки?

ответ

0

Возможно, это проблема на стороне сервера ASE. Проверьте файл ошибки ASE, должна быть трассировка стека с подсказками о том, почему процесс был прерван. В зависимости от того, что вы там найдете, вам может потребоваться обратиться в TechSupport и получить последний патч, а также увеличить некоторые параметры конфигурации ASE.

0

Я обычно видел эту ошибку, когда соединение является жертвой ситуации взаимоблокировки. Если это так, то это должно быть в журналах ошибок ASE.

0

Здесь у нас есть общий код ошибки «10053» WinSock, отображаемый из ОС, где клиент .net (ASE, Oledb и т. Д.) Вызывает БД.

Возможно, вы ничего не нашли в журналах ошибок ASE (если вы не активируете определенную трассировку пользователя), поскольку сервер закрывает соединение стандартным образом, в то время как клиентское программное обеспечение Sybase кэширует свой запрос и по-прежнему запись в сокет Windows (кстати, да, это ошибка/проблема: вы можете найти самую последнюю информацию о EBF и программном обеспечении или открыть новый запрос поддержки).

У меня возникла эта проблема при создании временной таблицы (из DLL-клиента .Net ASE): возможная причина заключается в том, что локальная временная таблица удаляется, если соединение возвращается в пул соединений (на самом деле ошибка присутствовала каждый день при первом испытании). Я пробовал turning off пул соединений в строке подключения, и это сработало для меня.

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