Разница между результатами вызовов хранимой процедуры из MS SQL SERVER и MS ACCESS

SP является RecordSource формы. При открытии формы SP выполняется и после тайм-аута запроса соединение закрывается безрезультатно. Если SP выполняется из SSMS, оно выполняется около 2 секунд и возвращает набор записей. Как я наблюдал через SSMS Profiler, вызовы идентичны, но количество прочтений (выполнение из Access)> 28 миллионов и около 70 тысяч из SSMS. Помогите мне, я в замешательстве. Скрин с профайлером http://take.ms/u7tTy


person anatol    schedule 28.04.2016    source источник
comment
Просто предположение: количество чтений! = количество строк. Это может быть связано с плохими планами запросов для SP, вызывающими это, например, с анализом параметров.   -  person tobypls    schedule 28.04.2016
comment
@BIDeveloper, 28 миллионов прочтений из Access   -  person anatol    schedule 28.04.2016
comment
Could be an issue with bad query plans for the SP causing this, such as parameter sniffing. @tobypls, что это значит?   -  person anatol    schedule 28.04.2016
comment
@anatol взгляните на этот stackoverflow.com/questions/6585417/ (в этом случае сеть аналогична MS Access в вашем случае)   -  person tobypls    schedule 28.04.2016
comment
Было бы полезно, если бы вы разместили изображение экрана вывода SQL Server Profiler.   -  person RichardCL    schedule 28.04.2016
comment
@richard345, у меня нет репутации в публикации изображений. Получить ссылку.   -  person anatol    schedule 29.04.2016


Ответы (1)


@tobypls,
большое спасибо - ваша ссылка была полезной.
Простое решение - переписать (например)

от

ALTER PROCEDURE [dbo].[sproc] 
@param1 int,  
AS  
SELECT * FROM Table WHERE ID = @param1  

to

ALTER PROCEDURE [dbo].[sproc] 
@param1 int,
AS
DECLARE @param1a int
SET @param1a = @param1
SELECT * FROM Table WHERE ID = @param1a  

Я получил его из этот пост.

Но если вам нужно полное понимание проблемы, вы должны прочитать действительно замечательную статью
Slow in Приложение, Быстрое в SSMS? Понимание секретов производительности

person anatol    schedule 29.04.2016