with update stored right linked ejemplos sql-server extended-events

sql-server - update - select max sql server ejemplos



¿Capturar valores de parámetros pasados en sesiones extendidas de SQL Server? (1)

He configurado eventos extendidos de SQL Server para capturar las últimas 1000 consultas fallidas en una base de datos específica en un búfer de anillo:

Create Event Session [Errors] on Server Add Event sqlserver.error_reported ( Action( sqlos.task_time, sqlserver.sql_text ) Where sqlserver.database_name=N''MyDatabase'' And error_number<>5701 -- Ignore changed db context messages ) Add target package0.ring_buffer(Set max_memory=102400) With ( MAX_MEMORY=4096 KB, EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS, MAX_DISPATCH_LATENCY=30 SECONDS, MAX_EVENT_SIZE=0 KB, MEMORY_PARTITION_MODE=NONE, TRACK_CAUSALITY=OFF, STARTUP_STATE=ON ) Go

Ahora puedo consultar estos errores así:

Select xmldata = Cast(xet.target_data as xml) Into #rbd From sys.dm_xe_session_targets xet Join sys.dm_xe_sessions xe ON (xe.address = xet.event_session_address) Where xe.name=''errors'' and target_name=''ring_buffer'' ; With Errors as ( Select e.query(''.'').value(''(/event/@timestamp)[1]'', ''datetime'') as "TimeStamp", e.query(''.'').value(''(/event/data[@name="message"]/value)[1]'', ''nvarchar(max)'') as "Message", e.query(''.'').value(''(/event/action[@name="sql_text"]/value)[1]'', ''nvarchar(max)'') as "SqlText", e.query(''.'').value(''(/event/action[@name="task_time"]/value)[1]'', ''bigint'')/@@TIMETICKS as "Duration" From #rbd Cross Apply XMLData.nodes(''/RingBufferTarget/event'') as Event(e) ) Select * from Errors Where SqlText is not null Drop Table #rbd

Hasta ahora tan bueno:

Esto ya ha sido de gran ayuda para rastrear más detalles sobre los errores que se lanzan a nivel de la aplicación.

Sin embargo, lo que lo haría aún más útil sería si pudiéramos ver los valores de los parámetros que se pasan a estas consultas, de la forma en que puede hacerlo en el Analizador de SQL. Así que cuando vemos un error como este ...

Conversion failed when converting date and/or time from character string.

para este SQL ...

(@NewValue nvarchar(10),@KeyValue int) Update SomeTable Set SomeField=@NewValue Where SomeTableID=@KeyValue

... sería informativo saber cuáles eran los valores de los parámetros @NewValue y @KeyValue .

¿Alguna idea donde pueda encontrar esta información?


Creo que solo el evento sqlserver.rpc_completed le dará un comando SQL completo, incluidos los valores de los parámetros.