Это странно, но я надеюсь, что кто-нибудь сможет мне помочь.
У меня есть вызов хранимой процедуры, выполнение которого занимает около 42 секунд - при вызове из приложения, подключенного через соединение ODBC. Однако, если я запустил тот же вызов в SSMS (Sql Server Management Studio), для выполнения потребуется всего 10 или 15 секунд… как записано трассировкой.
Это не похоже на проблему с сетью. Я передаю клиенту только около 1200 записей - и в любом случае время, которое я вам дал, было получено прямо из поля продолжительности трассировки ... поэтому SQL Server требуется в 3 или 4 раза дольше для обработки одного и того же вызова - когда выполняется через вызов ODBC. Я могу воспроизводить это снова и снова. Что более интересно, это то, что чтение и запись (взятые из трассировки) немного выше для вызова ODBC, но загрузка ЦП в 3 или 4 раза больше, чем при вызове SSMS.
Существуют и другие хранимые процессы, вызываемые как часть того же процесса, и, похоже, они не затрагиваются таким же образом ... или, по крайней мере, не в той же степени.
Мы используем SQL Server 2005
Есть идеи о том, что здесь происходит?
setпараметры, что означает, что он не будет использовать план из другого соединения, вместо этого он получит новый план, который может быть более подходящим для этого набора параметров. - person Martin Smith   schedule 15.02.2011