Pessoal, boa tarde.
Estou com uma dificuldade com a ação sqlserver.error_reported do Extended Events, onde 95% dos erros capturados não informam o valor do SQL_Text, que retorna NULL.
O comando para iniciar o XE é esse:
CREATE EVENT SESSION RelatorioErros ON SERVER
ADD EVENT sqlserver.error_reported
(ACTION ( sqlserver.sql_text
,sqlserver.username
,sqlserver.database_name
,sqlserver.client_app_name
,sqlserver.session_id
,sqlserver.query_hash
,sqlserver.query_plan_hash
,sqlserver.tsql_stack
,package0.last_error)
WHERE ([severity]> 10))
ADD TARGET package0.asynchronous_file_target (set filename = 'Y:\Ferramentas\RelatorioErros.xel')
WITH (MAX_MEMORY=4096 KB,
EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY=10 SECONDS,
MAX_EVENT_SIZE=0 KB,
MEMORY_PARTITION_MODE=NONE,
TRACK_CAUSALITY=ON,
STARTUP_STATE=ON)
Eu implantei o evento num servidor com 5 bancos de dados. Destes, 4 executam todas as instruções de aplicação via procedure, e apenas 1 envia comandos CRUD. Meu problema está nos 4 BDs que enviam procedures. Nenhuma delas é capturada. Mas todos os comandos
CRUD do outro BD são capturados. Montei outro XE com error_reported e rpc_starting. E, neste caso, o RPC_starting capturou todas as procedures.
Pensei em deixar os 2 ligados para combiná-los e conseguir os comandos que geraram erro, mas o volume de informações para importação torna o processo inviável.
O servidor está com SQL 2014 Enterprise Edition: Core-based Licensing (64-bit) SP2.
Podem me ajudar?