web-dev-qa-db-fra.com

Comment obtenir les valeurs des paramètres d'une procédure stockée en cours d'exécution?

Existe-t-il un moyen d'obtenir les valeurs des paramètres passés à une procédure stockée alors que la procédure stockée est en cours d'exécution? (J'essaie de déboguer une procédure stockée en cours d'exécution.)

Je sais que je peux voir les requêtes de la procédure stockée qui sont actuellement exécutées à l'aide des DMV sys.dm_exec_requests et sys.dm_exec_sql_text mais elles ne montrent pas les valeurs des paramètres utilisés.

12
J.D.

Pour SQL Server 2016, vous devez avoir préalablement activé l'infrastructure de profilage des requêtes avec l'indicateur de trace 7412 ou une session d'événements étendue capturant query_thread_profile (et être sur au moins SQL Server 2016 SP1 ) mais peut ensuite utiliser

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)

et voyez les ParameterRuntimeValue et ParameterCompiledValue du plan d'exécution de l'instruction en cours d'exécution.

Pour SQL Server 2019+, l'infrastructure est activée par défaut, donc ce qui précède ne fonctionnera que.

Cependant, il ne s'agit peut-être pas de tous les paramètres du proc stocké, car il n'inclura que les paramètres utilisés par le plan d'exécution.

14
Martin Smith