Мы используем Sybase / ODBC, как бороться с разъединениями при выполнении длинных пакетных SQL-запросов? - PullRequest
0 голосов
/ 09 мая 2018

Мы разрабатываем приложение на C #, которое использует ODBC и драйвер «Adaptive server enterprise» для извлечения данных из Sybase DB.

У нас есть длинный пакетный запрос SQL, который создает много промежуточных временных таблиц и возвращает в приложение несколько объектов DataTable. Мы видим исключения, говорящие TABLENAME not found, где TABLENAME является одной из наших промежуточных временных таблиц. Когда я проверяю состояние объекта OdbcConnection в отладчике, это Closed.

Мой вопрос очень общий. Это цена, которую вы платите за длительные сложные запросы? Или есть надежный способ избавиться от таких ложных разъединений?

Большое спасибо заранее!

1 Ответ

0 голосов
/ 09 мая 2018

Есть пара параметров времени ожидания ODBC - см. Документы SDK по адресу: http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc20116.1550/html/aseodbc/CHDCGBEH.htm

В частности, CommandTimeOut и ConnectionTimeOut, которые вы можете установить соответственно.

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

...