2016-04-28 20 views
1

SP ist RecordSource des Formulars. Wenn das Formular geöffnet wird, wird SP ausgeführt und nach einem Timeout der Abfrage schließt die Verbindung mit nichts. Wenn SP von SSMS ausgeführt wird, hat es etwa 2 Sekunden lang ausgeführt und eine Reihe von Datensätzen zurückgegeben. Als ich durch den SSMS Profiler sah, sind Aufrufe identisch, aber Anzahl der gelesenen Wert (eine Ausführung von Access)> 28 Millionen und etwa 70 Tausend von der SSMS. Hilf mir, ich bin verwirrt. Bildschirm mit Profiler http://take.ms/u7tTyUnterschied zwischen den Ergebnissen der Aufrufe gespeicherte Prozedur von MS SQL SERVER und MS ACCESS

+0

Nur eine Vermutung hier lesen: Graf von Reads = Anzahl der Zeilen. Dies könnte ein Problem mit fehlerhaften Abfrageplänen für den SP sein, z. B. Parameter-Sniffing. – tobypls

+0

@BIDeveloper, 28 Millionen liest von Access – anatol

+0

'Könnte ein Problem mit fehlerhaften Abfragepläne für die SP verursacht dies, wie z. B. Parameter schnüffeln.' @tobypls, was bedeutet es? – anatol

Antwort

2

@tobypls,
vielen Dank - Ihr Link hilfreich war.
Einfache Lösung ist Rewrite (zum Beispiel)

von

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

zu

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

ich es von this post bekommen.

Aber wenn Sie volles Verständnis für Probleme benötigen, dann müssen Sie wirklich große Artikel
Slow in the Application, Fast in SSMS? Understanding Performance Mysteries