it-swarm.com.de

Wie erhalte ich die Parameterwerte einer gespeicherten Prozedur, die sich mitten in der Ausführung befindet?

Gibt es eine Möglichkeit, die Werte der Parameter abzurufen, die an eine gespeicherte Prozedur übergeben wurden, während sich die gespeicherte Prozedur mitten in der Ausführung befindet? (Ich versuche, eine aktiv ausgeführte gespeicherte Prozedur zu debuggen.)

Ich weiß, dass ich die Abfragen der gespeicherten Prozedur sehen kann, die derzeit mit den DMVs sys.dm_exec_requests und sys.dm_exec_sql_text ausgeführt werden, aber sie zeigen nicht die Werte der verwendeten Parameter an.

12
J.D.

Für SQL Server 2016 muss die Infrastruktur für die Abfrageprofilerstellung im Voraus mit dem Ablaufverfolgungsflag 7412 oder einer erweiterten Ereignissitzung aktiviert sein, in der query_thread_profile (und auf mindestens SQL Server 2016 SP1 sein) kann dann aber verwenden

WITH XMLNAMESPACES
   (DEFAULT 'http://schemas.Microsoft.com/sqlserver/2004/07/showplan')
select query_plan.query('//ParameterList')
from sys.dm_exec_query_statistics_xml(@session_id)

und sehen Sie die ParameterRuntimeValue und ParameterCompiledValue aus dem Ausführungsplan der ausgeführten Anweisung.

Für SQL Server 2019+ ist die Infrastruktur standardmäßig aktiviert, sodass die oben genannten Funktionen nur funktionieren.

Dies sind möglicherweise nicht alle Parameter des gespeicherten Prozesses, da er nur die vom Ausführungsplan verwendeten Parameter enthält.

14
Martin Smith