Доброе утро,
У меня проблемы с тайм-аутом запросов в MS SQL Server 2000. Он используется как бэкэнд для Intuitive ERP, довольно старой системы ERP, основанной на MS Access.
Моя проблема в том, что при выполнении плановых расчетов, процесса, который выполняет большое количество запросов, мы испытываем ошибку тайм-аута SQL.
Изначально я использовал профилировщик для определения ошибочного запроса (запрос DELETE) и выполнил его вручную перед повторным запуском, что, похоже, сработало. Однако при последующих запусках таймаут на более позднем этапе. Детали здесь немного отрывочны, поскольку мой менеджер взял на себя ответственность, но из того, что она мне рассказывает, я могу предположить, что это был запрос SELECT или INSERT.
Выполнение любого из этих запросов непосредственно на сервере (с использованием Enterprise Manager) приводит к своевременному ответу каждый раз, кажется, нет причин для тайм-аута.
Я понимаю, что это не так уж и много, поэтому я думаю, мой вопрос больше в том, какие вещи могут вызвать тайм-аут запроса? В прошлом у нас были проблемы с дисковым пространством, но здесь проблема не в этом. Я также проверил сетевое соединение: пинги возвращаются примерно через 1 мс, так что это не должно быть проблемой (кроме того, профилировщик показывает, что неудачные запросы занимают чрезмерно много времени, предполагая, что это что-то на стороне сервера) .
Спасибо за ваше время.
В отличие от того, что вы запускаете операторы ad-hoc, приложение, вероятно, запускает их все в контексте пользовательской транзакции, поэтому в этом случае может быть гораздо больше блокировок. В этом случае одновременная активность пользователей в базе данных может привести к блокировке, что, в свою очередь, может вызвать тайм-ауты, если что-то задерживается слишком долго.
К сожалению, поскольку мы говорим о стороннем приложении, я не уверен, что вы можете многое сделать на стороне SQL Server. Если приложение предоставляет какие-либо настройки тайм-аута, может быть хорошей идеей их увеличить, возможно, значительно. Также может быть полезно запускать такие виды пакетных процессов в непиковое время, если это возможно.