我的 SQL Server 2016 数据库将把审计日志保存到文件夹 E:\SQL Login Audit 中的物理文件中。我使用 SQL 查询将这些审计日志文件内容插入到名为 AuditLog:insert into 的表中
我的 SQL Server 2016 数据库将把审计日志保存到文件夹 E:\SQL Login Audit 的物理文件中。我使用 SQL 查询将这些审计日志文件内容插入到名为 AuditLog 的表中:
insert into AuditLog
SELECT event_time,
sequence_number
,action_id
,server_principal_name
,server_instance_name
,database_name
,schema_name
,object_name
,statement
FROM sys.fn_get_audit_file('E:\SQL Login Audit\FINPRD\*.*', DEFAULT, DEFAULT)
where event_time>FORMAT(DATEADD(day, -1, getdate()), 'yyyyMMdd')
AND action_id <> 'LGIF'
AND [statement] NOT like '%sys.spt_columns_view%'
但从一个月前开始,这个 SQL 查询就失败了。错误信息如下:
资源池“内部”中的系统内存不足以运行此查询
我发现 SELECT 可以工作。显示查询结果大约需要 10 分钟。但如果我添加 INSERT,它将失败并显示上述错误消息。我重新启动了数据库和服务器,但情况仍然相同。以下是数据库的内存设置。有人知道根本原因是什么吗?