谁创建了此扩展事件会话?

时间:2018-11-21 21:49:26

标签: azure-sql-database extended-events dmv

已要求我找出谁在Azure SQL数据库上创建了某个扩展事件会话。但是,从DMV来看,有很多属性,但是没有什么东西可以指示创建它的时间或创建者。

有没有办法确定这一点?

谢谢。

1 个答案:

答案 0 :(得分:2)

可以在Azure中完成此操作,但是必须在数据库或服务器级别启用SQL审核。然后,您必须使用sys.fn_get_audit_file函数执行以下操作:

SET NOCOUNT ON;
SELECT
   server_principal_id
 , database_principal_id
 , target_server_principal_id
 , target_database_principal_id
 , session_server_principal_name
 , server_principal_name
 , server_principal_sid
 , database_principal_name
 , target_server_principal_name
 , target_server_principal_sid
 , target_database_principal_name
 , server_instance_name
 , database_name
 , schema_name
 , object_name
 , statement
 , additional_information
FROM    sys.fn_get_audit_file(
                             'https://blob_storage_name.blob.core.windows.net/sqldbauditlogs/SERVER_NAME/DATABASE_NAME/SqlDbAuditing_ServerAudit/2018-11-27' -- INSERT date here
                            , DEFAULT
                            , DEFAULT
                         )
WHERE statement LIKE '%CREATE EVENT SESSION%';

这应该为您提供所需的信息。请记住,SQL审核可以生成大量数据,因此您可能需要每天甚至每小时查询审核文件(您可以了解如何使用sys.fn_get_audit_file here使用日期模式)。

如果发现数据量太大而无法查询,则可以随时下载审核文件(.xel文件,通过扩展事件实现SQL审核),并编写一个自定义工具来执行此操作(Microsoft提供了一个库来解析)通过LINQ扩展事件文件。请参见详细信息here