1

Я тестирую хранимую процедуру на SQL Server 2008 R2 Express. В конце концов, он будет запущен в производство на полной версии SQL Server 2008 R2.Тайм-аут хранимой процедуры SQL Server при первом запуске

Тестирование хранимой процедуры в Studio Management Я замечаю, что при первом запуске после восстановления базы данных или перезапуска службы SQL Server процедура занимает около 35 секунд. Второе и последующее время завершается мгновенно.

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

Моя проблема в том, что я выполняю эту хранимую процедуру из своего приложения на C#, если она длится более 30 секунд. Я думаю, что я понял, как увеличить тайм-аут, но из всех тем, которые я прочитал, люди говорят, что во всех исключительных обстоятельствах 30 секунд должны быть кучей времени. «Исправить проблему не увеличить таймаут».

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

Ни одна из моих других хранимых процедур не имеет этой проблемы.

Любые идеи о наилучшем способе диагностики реальной проблемы?

Процедура не слишком сложна, она читается из пары соединенных таблиц и вставляет около 4000 строк в другую таблицу на основе нескольких условий. Я не лучший SQLer в мире, поэтому, возможно, я сделал некоторые глупые вещи.

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

Дайте мне знать, если вы считаете, что стоит разместить здесь свой код sql.

Благодаря Дэвид

ответ

0

Похоже, я ответил на мой собственный вопрос. Я нажал на маленькую кнопку «Показать примерный план запроса» в Management Studio и взглянул на план запроса. В хороших больших письмах он рекомендовал, чтобы я показывал индекс в таблице и предоставлял мне точный код, не содержащий имени индекса, которое мне нужно было использовать для его создания. Я взглянул на этот стол, и в нем есть более 3 миллионов строк. Не так много в сегодняшних условиях, но, очевидно, проблема, если вам нужно продолжать читать ее до конца, что, по-видимому, делает, пытаясь создать план запроса.

В любом случае, я создал индекс и запустил приложение снова, и я не могу воспроизвести проблему. Он запускается как пуля каждый раз.

Думаю, мне просто нужно подумать о последствиях того, что я добавляю индекс. Прежде всего, это даст ему имя, которое внешняя компания вряд ли будет дублировать. :)

Спасибо всем, кто нашел время, чтобы прочитать мое сообщение, и я надеюсь, что этот ответ поможет кому-то еще.

David