1

Ich stehe vor einem sehr seltsamen Problem mit SQL Server, dass ich eine gespeicherte Prozedur habe, und ich führe die Prozedur aus C# -Code. Die Prozedur gibt ein Dataset/Dataset zurück.Gespeicherte Prozedur dauert Zeit in Ausführung

Mein Problem ist, dass die Prozedur zu viel Zeit in Ausführung von C# -Code/ADO.NET-Code dauert (etwa 2 Minuten). Aber wenn ich dieselbe Abfrage von SQL Server aus führe, wird sie innerhalb einer Sekunde ausgeführt.

Auch ich habe versucht, indem Sie neue Prozedur mit dem gleichen Code (alter Prozedurcode) erstellen und wenn ich diese neue Prozedur von ADO.NET ausführe, dauert es nicht viel Zeit. Es wird ein zweites Mal in C# ausgeführt.

So bekomme ich nicht, was ist das Problem mit meinem alten Verfahren.

Antwort

1

Ich vermute, dass Sie einen schlechten Ausführungsplan haben, wenn die Prozedur aus dem Code aufgerufen wird. Wenn Sie die gespeicherte Prozedur ausführen, haben Sie einen anderen Plan, da die Plansignatur bei der Ausführung von SSMS standardmäßig unterschiedlich ist.

siehe: http://www.sommarskog.se/query-plan-mysteries.html für einige mögliche Fixes und Klarheit.

Wenn Ihre Prozedur Parameter-schwer ist, kann es sinnvoll sein, jedes Mal mit option(recompile) zu kompilieren;

+0

danke für Ihren Vorschlag. Es funktioniert jetzt. – Boss

Verwandte Themen