我在其中一个数据库上启用了Azure SQL审核。我希望能够自动化一个过程,在该过程中,给定日期的文件内容存储在SQL表中。但是,要做到这一点,我需要知道要处理的blob文件的名称。例如,在我的blob文件夹中,我看到以下内容:
为了让我自动化这个过程,我需要知道那里的文件以及它们的名称。我该怎么做呢?我可能会使用T-SQL来处理这些文件。
答案 0 :(得分:4)
Blob文件名格式: CreationTime_FileNumberInSession.xel
如您所见,文件名是随机的,因为它们基于创建它们的时间。
审计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