Ich versuche herauszufinden, ob es eine Möglichkeit gibt, eine "Version" eines SP zu identifizieren, der am häufigsten aufgerufen wird. Ich habe eine SP, die mit einer Reihe von verschiedenen Parametern aufgerufen wird. Ich weiß, dass der SP einige Probleme verursacht und versucht, das Problem zu lokalisieren. Neben der Erfassung von Aufrufen für den SP und der manuellen Sichtung der Ergebnisse ist es möglich, den Profiler zu verwenden, um SP-Aufrufe mit den bereitgestellten Parametern zu gruppieren?
Ich bin kein DB (A / E), nur ein Web-Entwickler, also sind alle Hinweise / Punkte in die richtige Richtung hilfreich. Danke!
EDIT: Das Kompilieren des SP hilft nicht viel.
Dies gibt Ihnen die Top 50 am häufigsten verwendeten Procs und die Anweisungen in den Procs, von hier: Zeigen Sie die 50 am häufigsten verwendeten gespeicherte Prozeduren in SQL Server
%Vor%Besuchen Sie diesen Link, um nur die Abfrage nach dem Proz-Namen zu holen, aber ich denke, dies ist eine bessere Abfrage, da Sie die Anweisungen in den Procs auch
erhaltenEs klingt so, als müssten Sie diese Informationen nur für kurze Zeit erfassen können. Der Sproc kann während dieser Periode viele Male aufgerufen werden, aber es ist eine endliche Periode.
Wenn das der Fall ist, könnten Sie vielleicht die Sproc-Anrufe irgendwo protokollieren? Wenn Sie den Sproc-Code kontrollieren, können Sie die Protokollierung dort durchführen. Eine Möglichkeit wäre, zu diesem Zweck eine spezielle Tabelle zu erstellen, dieser Tabelle am Anfang oder Ende des vorhandenen Sproc ein INSERT hinzuzufügen und darauf zu warten, dass sich einige Datensätze in der Tabelle ansammeln .
Abhängig von den Besonderheiten könnten Sie in der benutzerdefinierten Protokolltabelle für jeden SPROC-Parameter eine Spalte erstellen.
Dann hätten Sie genügend Informationen über die Verwendung des Sprocs für den Zeitraum, in dem Sie die Protokollierung durchführen.
Wenn Sie die in der Tabelle gesammelten Daten verwenden, können Sie die häufigsten Parameterwerte abfragen, z. B. welche Benutzer oder Anwendungen oder Webseiten usw. betroffen sind, die Datums- und Uhrzeitangaben für den Beginn und das Ende des Sproc-Aufrufs und was auch immer du loggst.
Dies würde keine Änderungen am Anwendungscode nach sich ziehen und könnte nach Abschluss der Fehlerbehebung vollständig beseitigt werden. Abgesehen von den unvermeidlichen Leistungseinbußen bei all dem Holzeinschlag ist der Preis für diesen Ansatz nicht hoch.
Bearbeiten: Dieser Ansatz ist eine Alternative für Benutzer, denen die speziellen Berechtigungen zum Ausführen von DMV-Abfragen für Tabellen wie sys.dm_exec_query_stats fehlen. In vielen Shops ist es für Entwickler nicht möglich, solche Berechtigungen - insbesondere für Produktionsdatenbanken - zu erhalten.
Wenn Sie wissen, welcher SP die Probleme verursacht, können Sie nicht einfach die Parameter protokollieren, die innerhalb dieses SP übergeben werden? Sie könnten eine Tabelle mit der Liste der Parameter einrichten, diese zusammen mit der Zeit protokollieren, die der Vorgang benötigt hat, und dann diese Tabelle abfragen, um festzustellen, welche Parameter die schlechteste Leistung verursachen.
Ich mag diesen Codeschnipsel, um die Ausführungsstatistiken zurückzuziehen und zu überprüfen. und der zwischengespeicherte Abfrageplan für eine gegebene gespeicherte Prozedur. In Management Studio können Sie auf das in der Spalte "query_plan" zurückgegebene XML klicken, um die grafische Version des Ausführungsplans anzuzeigen.
%Vor%Tags und Links sql-server-2005 stored-procedures tsql