如何通过Set-AzSqlServerAudit排除Azure SQL Server审计日志中的Select语句
Azure SQL Server审计排除Select语句的配置错误分析
你的配置主要存在三个核心问题:
逻辑运算符错误:你使用了
or作为条件连接符,这会导致所有语句都被审计记录。因为对于任意一条SQL语句,要么不匹配第一个模式,要么不匹配第二个模式,整个表达式永远为真,相当于没有任何过滤效果。要排除符合条件的语句,必须使用and来同时满足多个排除条件。匹配语法错误:
<>是精确不等于判断,而你需要匹配的是包含select的模糊模式,应该使用NOT LIKE配合通配符%来实现模糊排除。另外如果需要忽略大小写,可以用LOWER(statement)统一转小写后匹配,或者指定排序规则区分大小写。引号格式错误:第二个命令里混用了中文引号(
“、‘),PowerShell无法识别中文引号,必须统一使用英文双引号或单引号,嵌套引号时要正确转义(比如在双引号内用单引号,或用反引号\转义)。
正确配置示例
如果要排除所有包含select(不区分大小写)的语句,可使用以下命令:
Set-AzSqlServerAudit -ResourceGroupName "myresourcegroup" -ServerName "mysqlserver" -PredicateExpression "LOWER(statement) NOT LIKE '%select%'"
如果需要精准排除特定模式的语句(比如sp_executesql调用的select语句和直接的SELECT 1开头语句),正确逻辑的命令如下:
Set-AzSqlServerAudit -ResourceGroupName "myresourcegroup" -ServerName "mysqlserver" -PredicateExpression "statement NOT LIKE 'exec sp_executesql N%select%' AND statement NOT LIKE 'SELECT 1%'"
内容的提问来源于stack exchange,提问作者arthus
相关产品推荐
相关产品推荐

