web-dev-qa-db-fra.com

Comment voir la valeur d'une variable utilisée dans une instruction SQL lors d'une trace de serveur?

J'ai une procédure stockée qui contient des déclarations SQL qui prennent des variables. Par exemple,

update customer set cust_id = @newcust_id where issuedate < @transferdate and cust_id = @oldcust_id

Les valeurs des variables sont attribuées précédemment dans le SP.

Comment montrer les valeurs de ces variables lors d'une trace de serveur?

5
deutschZuid

Pour débogage des buts, vous pouvez les tracer explicitement dans le profileur à l'aide d'un événement personnalisé, via sp_trace_generateevent :

declare @tracedata varbinary(8000);
set @tracedata = cast(@transferdate as varbinary(8000));
exec sp_trace_generateevent 82, 
        N'@transferdate', 
        @tracedata );
set @tracedata = cast(@oldcust_id as varbinary(8000));
exec sp_trace_generateevent 82, 
        N'@oldcust_id', 
        @tracedata);

Vous devez modifier votre session de profileur pour surveiller pour l'utilisateur Classe d'événement configurable par l'utilisateur , sinon vous ne verrez pas les événements générés. Je voudrais également commenter l'appel à sp_trace_generateevent En production une fois le débogage terminé. L'appel n'est pas très coûteux (spécialement s'il n'y a pas d'écoute de surveillance pour cela), mais il ne devrait pas être supprimé non plus.

mise à jour

Le exec appelez la prise de doigt permettant une mise en forme d'être inline dans la liste des paramètres. J'ai modifié le code pour montrer comment le jeter avant l'exécutant. La valeur sera dans la colonne BinaryData, dans la représentation hexagone (donc 'daf' va apparaître comme 0x646166).

9
Remus Rusanu

Si vous traçez, vous attrapez tous les paramètres de votre trace.

Si vous souhaitez voir la dernière entrée d'une connexion donnée à une utilisation donnée INPUTBUFFBER DBCC

1
Eric Higgins

Changez la procédure stockée pour les imprimer avant que la mise à jour ne fonctionne ou utilise le débogueur intégré à SSMS plutôt que le profileur.

0
SqlACID