Очень простая хранимая процедура истечет - PullRequest
2 голосов
/ 10 февраля 2010

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

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

«Выбрать * из таблицы, где столбец = @parameter»

Когда sp выполняется в студии управления, это занимает: 00 секунд.

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

Это настольное приложение vb.net, использующее sql server 2005.

Ответы [ 4 ]

6 голосов
/ 11 февраля 2010

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

3 голосов
/ 11 февраля 2010

1001 * попробовать *

SELECT * FROM Table WITH (NOLOCK) WHERE Column = @parameter
1 голос
/ 13 августа 2012

У нас была очень похожая проблема, у нас было несколько хранимых процедур, которые сохраняли время ожидания в приложении (~ 30 секунд), но работали нормально в SSMS.

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

Более подробную информацию см. http://dannykendrick.blogspot.co.nz/2012/08/sql-parameter-sniffing.html

0 голосов
/ 11 февраля 2010

вам нужно получить показатели производительности. Используйте SQL Server Profiler, чтобы убедиться, что SP работает медленно или что-то еще. Если в это время медленный SQL, подумайте о таких вещах, как блокировки, которые могут заставить ваш запрос ждать. Позвольте нам знать, и мы могли бы дать более конкретную информацию на этом этапе.

Если это не SP, а, скажем, код VB, может пригодиться неплохой профиль, такой как Муравьи RedGate или JetBrains 'DotTrace .

...