Тайм-аут SQL Server при выполнении хранимой процедуры

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

Однако, используя SQL Server Profiler, я смог скопировать код, созданный ADO.NET, и запустить его непосредственно в базе данных. Я оставил этот запрос примерно на 5 минут, но он так и не смог ничего вернуть.

Вот несколько фактов:

  1. Хранимая процедура имеет около 100 аргументов, которые передаются ей.

  2. Мое приложение MVC, SSMS и Sql Server 2008 установлены на одном компьютере.

  3. Хранимая процедура пытается обновить одну строку в таблице, содержащей около 5000 записей.

  4. Был триггер, который обновит LastModifiedDate а также CreatedDate, но я удалил эти триггеры и обновил EDMX, чтобы определить, был ли бесконечный цикл, вызванный этими триггерами.

  5. Наш действующий сервер выполняет точно такую ​​же хранимую процедуру (используя классический asp), что и тот, который я пытаюсь запустить, и достигает правильного результата. Кроме того, живой сервер не может запустить ту же хранимую процедуру в.NET

  6. Моя машина не может запустить хранимую процедуру как для классического ASP, так и для ASP.NET

  7. Кажется, хранимая процедура завершается сбоем только для нескольких строк, а другие работают отлично.

  8. Я попытался изменить значения параметров, которые передаются в хранимую процедуру

  9. Другие хранимые процедуры работают нормально

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

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

Благодарю.

PS Не говорите мне, чтобы изменить свойство тайм-аута команды, я попытался установить это в ноль!

1 ответ

Я могу думать о двух вещах:

  1. Я предполагаю, что вы уже реализовали обработку исключений в хранимой процедуре. Если нет, то, пожалуйста, сделайте это и попробуйте сначала разобраться с формулировкой проблемы. Когда вы говорите, что это происходит для некоторых строк, это может быть связано с плохими данными? Прочтите это для информации о том, как сделать обработку исключений в SQL Server 2008

  2. Вы пытались выяснить, есть ли тупик? Пожалуйста, прочитайте это для подробной процедуры и понимания.

Другие вопросы по тегам