如何查看Azure SQL数据库的异常日志?

时间:2018-02-22 16:41:00

标签: azure-sql-database

我想查看我的生产Azure SQL数据库中过去72小时内抛出的所有异常。 SQL查询是理想的,但我会解决任何方法,例如导航到Azure门户中的网页。

我希望日志包含抛出异常的任何和所有SQL语句(以及理想情况下存储过程/函数调用)。示例异常将是完整性约束违规,死锁等。

理想情况下,返回的列将是时间戳,错误消息和违规语句/调用。

到目前为止我唯一发现的是sys.event_log,但不幸的是,它只包含连接和死锁日志信息,而不是一般例外。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您可能想尝试扩展事件:

CREATE EVENT SESSION azure_monitor
ON DATABASE

ADD EVENT sqlserver.error_reported(
ACTION (sqlserver.client_app_name, sqlserver.client_hostname, sqlserver.session_id, sqlserver.sql_text,
        sqlserver.username))

ADD TARGET package0.ring_buffer
(SET max_memory = 500, max_events_limit = 10 )
;

ALTER EVENT SESSION azure_monitor
ON DATABASE
STATE = START;

-- Some errors occurred

-- Query captured errors

SELECT CAST(target_data AS XML)
FROM sys.dm_xe_database_sessions AS s
JOIN sys.dm_xe_database_session_targets AS t
ON t.event_session_address = s.address
WHERE s.name = N'azure_monitor';

-- Stopping

ALTER EVENT SESSION azure_monitor
ON DATABASE
STATE = stop;

ALTER EVENT SESSION  azure_monitor
ON DATABASE
DROP TARGET package0.ring_buffer;

DROP EVENT SESSION azure_monitor
ON DATABASE;
GO