如何生成Azure SQL Audit blob文件名?

时间:2017-11-23 15:44:21

标签: azure azure-sql-database azure-storage

我在其中一个数据库上启用了Azure SQL审核。我希望能够自动化一个过程,在该过程中,给定日期的文件内容存储在SQL表中。但是,要做到这一点,我需要知道要处理的blob文件的名称。例如,在我的blob文件夹中,我看到以下内容:

enter image description here

为了让我自动化这个过程,我需要知道那里的文件以及它们的名称。我该怎么做呢?我可能会使用T-SQL来处理这些文件。

2 个答案:

答案 0 :(得分:4)

Blob文件名格式: CreationTime_FileNumberInSession.xel

  • CreationTime - UTC时间(hh_mm_ss_ms格式)
  • FileNumberInSession - 案例会话日志跨越多个Blob文件的运行索引

如您所见,文件名是随机的,因为它们基于创建它们的时间。


审计blob文件存储在“sqldbauditlogs”容器中的以下目录层次结构中('/'分隔符表示目录层次结构):

< ServerName> /< DatabaseName> /< AuditName> /< CreationDate> /


要处理给定日期的所有日志,只需收集相关../<CreationDate>/层次结构中的所有blob。


谢谢,

吉拉德(MSFT)

答案 1 :(得分:2)

如果您尝试将审核加载到表格中,我会执行以下操作。

1 - 编写电源shell脚本,在要加载的当天获取blob存储容器中的审计文件列表。

2 - 使用sys.fn_get_audit_file表值函数将文件条目加载并附加到另一个数据库中的累积表中。

以下是您可能使用的示例TSQL脚本。

    SELECT *
    FROM sys.fn_get_audit_file 
    ('https://sa-name.blob.core.windows.net/sqldbauditlogs/server-name/database-name/SqlDbAuditing_Audit_NoRetention/2017-11-23/12_01_02_960_0.xel',default,default);
    GO

3 - 使用Azure自动化在每日计时器上安排PowerShell工作流以执行加载。

4 - 这是blob文件布局的white paper

快乐编码。

约翰

狡猾的Dba