Heute hatte ich ein Problem mit einem Zeitlimit für gespeicherte Prozeduren (das länger als 30 Sekunden dauerte), als es von einer ASP.NET-Webseite ausgeführt wurde, das jedoch schnell ausgeführt wurde, wenn es von SSMS ausgeführt wurde (dauerte 5 Sekunden).
Nachdem ich den Verdacht hatte, dass Parameter als Schuldiger geschnüffelt wurden, maskierte ich die Eingabeparameter und die Abfrage wurde schneller ausgeführt.
Meine Frage ist: Warum ist das passiert?
Dieses System ist seit mehr als 5 Jahren in Produktion und dies ist das erste Mal, dass wir so etwas auf unseren gespeicherten Prozeduren sehen. Ist das "Datenbankverschleiß"?
Wir haben das Problem gelöst, es ist also keine große Sache, aber ich bin nur neugierig, warum dies geschah.
DROP
/ CREATE PROC
.sql-Dateien füge ich normalerweise ein EXEC
for the sproc mit realistischen Parametern ein. Jedes Mal, wenn der Sproc neu erstellt wird, wird er einmal mit guten Parametern ausgeführt und (sollte) einen guten Ausführungsplan erhalten.