Я хочу отфильтровать аудиты SQL, чтобы не захватывать события, инициированные определенными пользователями и определенной схемой. В одном из существующих аудитов серверов я обнаружил предикат фильтра как
(
[schema_name]<>'sys' AND
[server_principal_name]<>'SILVER\Distributor' AND
[server_principal_name]<>'SILVER\Replicator' AND
[server_principal_name]<>'SILVER\Merger' AND
[server_principal_name]<>'SILVER\Collecter' AND
[server_principal_name]<>'SILVER\Reporter' AND
[server_principal_name]<>'SILVER\Starter' AND
)
Я думаю, это должно быть OR
, а не AND
. Согласно TSQL, похоже, что указанное выше условие никогда не будет выполнено. AND
означает, что все условия должны быть выполнены. Я прочитал журналы, используя функцию sys.fn_get_audit_file
, и не увидел записей, относящихся к пользователям и схемам с ограниченным доступом. Это выглядело как вышеупомянутый предикат работал
Является ли AND
здесь действующим как разделитель правил.
Не могли бы вы объяснить это?