谁创建了这个扩展事件会话?
Who created this Extended Events session?
有人要求我找出谁在 Azure SQL 数据库上创建了某个扩展事件会话。但是,查看 DMV,有很多属性,但没有说明它是何时创建的,由谁创建的。
有办法确定吗?
谢谢。
在 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
[=13 如何使用日期模式=]).
如果您发现数据量太大而无法查询,您可以随时下载审计文件(.xel 文件,SQL审计是通过扩展事件实现的)并编写自定义工具来执行此操作(Microsoft正在提供一个库来通过 LINQ 解析扩展事件文件。查看详细信息 here)。
有人要求我找出谁在 Azure SQL 数据库上创建了某个扩展事件会话。但是,查看 DMV,有很多属性,但没有说明它是何时创建的,由谁创建的。
有办法确定吗?
谢谢。
在 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
[=13 如何使用日期模式=]).
如果您发现数据量太大而无法查询,您可以随时下载审计文件(.xel 文件,SQL审计是通过扩展事件实现的)并编写自定义工具来执行此操作(Microsoft正在提供一个库来通过 LINQ 解析扩展事件文件。查看详细信息 here)。