J'utilise des événements étendus pour tracer les instructions utilisées par notre application. J'ai créé une session qui collectera les informations que je veux, sauf que je voudrais également connaître les valeurs réelles des paramètres qui ont été utilisés .
J'exécute cette trace sur un environnement de non-production et toute performance atteinte par la trace est acceptable.
Toutes les requêtes proviennent d'Hibernate et ont été paramétrées sous forme de:
SELECT a, b, c From Customer where CustomerId = @P0
Ceci est ma configuration de session.
CREATE EVENT SESSION [TracingForStatements] ON SERVER
ADD EVENT sqlserver.sp_statement_completed (
ACTION (
sqlserver.session_id,
package0.collect_system_time,
sqlserver.transaction_id,
package0.event_sequence
)
WHERE (
sqlserver.database_id=555
)
)
ADD TARGET package0.ring_buffer(SET max_memory= 128000)
WITH (EVENT_RETENTION_MODE = NO_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 1 SECONDS)
Comment puis-je capturer les valeurs réelles des paramètres utilisés dans les instructions capturées? C'est possible?
- Modifier (solution de contournement): changer l'événement en rpc_completed me donne la commande sql complète (y compris toutes les valeurs de paramètres) appelée depuis Hibernate. Dans d'autres cas, il serait toujours bon de savoir comment capturer les valeurs des paramètres, si cela est possible.
la source
Réponses:
Quelqu'un a mentionné "Je pense que seul l'événement sqlserver.rpc_completed vous donnera la commande SQL complète, y compris les valeurs des paramètres." Veuillez examiner la réponse ci-dessous:
Capture des valeurs de paramètres passées dans les sessions étendues de SQL Server
la source