【问题标题】:Who created this Extended Events session?谁创建了这个扩展活动会话?
【发布时间】:2019-04-24 13:06:57
【问题描述】:

我被要求找出谁在 Azure SQL 数据库上创建了某个扩展事件会话。但是,翻阅 DMV,有很多属性,但没有表明它是什么时候创建的,或者是由谁创建的。

有没有办法确定这一点?

谢谢。

【问题讨论】:

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


    【解决方案1】:

    在 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)。

    【讨论】:

      猜你喜欢
      • 2019-05-17
      • 2010-10-18
      • 2015-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-17
      • 1970-01-01
      相关资源
      最近更新 更多