将Azure SQL Database的.XEL审计日志导入SQL Server遇报错求助
Azure SQL审计日志读取错误的原因及解决方法
核心问题:用错了函数
你遇到的两个错误本质是混淆了两个SQL函数的适用场景:
sys.fn_xe_file_target_read_file:仅用于读取本地SQL Server实例生成的扩展事件XEL文件sys.fn_get_audit_file:专门用于读取Azure SQL Database/托管实例生成的审计日志文件(不管是XEL还是CSV格式)
错误拆解
第一个错误「文件名无效或SQL Server服务账户无权限」
这是因为你最初存放XEL文件的目录,SQL Server服务账户(通常是NT SERVICE\MSSQLSERVER)没有读取权限。移到SQL Server的DATA文件夹后权限问题解决,但函数不匹配导致第二个错误。第二个错误「审计日志需使用fn_get_audit_file函数访问」
这是系统明确提示:Azure SQL的审计日志格式和本地SQL Server的扩展事件文件不同,必须用专门的审计日志读取函数。
正确操作步骤
- 确保审计文件存放在SQL Server服务账户有权限的目录(比如你已经移到的DATA文件夹,这个操作是对的)
- 执行以下查询语句读取日志:
SELECT * FROM sys.fn_get_audit_file( 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\*.xel', DEFAULT, DEFAULT );- 把路径替换成你实际的XEL文件存放路径,用
*.xel通配符匹配所有相关审计文件 - 后两个
DEFAULT参数分别代表起始时间和结束时间,使用DEFAULT会读取文件中所有时间范围的日志
- 把路径替换成你实际的XEL文件存放路径,用
补充注意事项
- 如果下载的是CSV格式的审计日志,只需把路径中的
*.xel改成*.csv即可,函数不变 - 确保你的本地SQL Server版本在2012及以上,该版本开始支持
sys.fn_get_audit_file函数
内容的提问来源于stack exchange,提问作者Francesco Mantovani
相关产品推荐
相关产品推荐

