尝试禁用 MS SQL Server 2022 审核以捕获访问权限更改事件需要永远

问题描述 投票:0回答:1

我正在尝试删除服务器审核,它正在捕获服务器审核规范中定义的登录事件,如下所示:

CREATE SERVER AUDIT SPECIFICATION [System Login Audit]
FOR SERVER AUDIT [System Logins]
ADD (DATABASE_ROLE_MEMBER_CHANGE_GROUP),
ADD (SERVER_ROLE_MEMBER_CHANGE_GROUP),
ADD (AUDIT_CHANGE_GROUP),
ADD (DBCC_GROUP),
ADD (DATABASE_PERMISSION_CHANGE_GROUP),
ADD (DATABASE_OBJECT_PERMISSION_CHANGE_GROUP),
ADD (SERVER_PERMISSION_CHANGE_GROUP),
ADD (SERVER_PRINCIPAL_IMPERSONATION_GROUP),
ADD (DATABASE_CHANGE_GROUP),
ADD (DATABASE_OBJECT_CHANGE_GROUP),
ADD (SERVER_PRINCIPAL_CHANGE_GROUP),
ADD (LOGIN_CHANGE_PASSWORD_GROUP),
ADD (SERVER_STATE_CHANGE_GROUP),
ADD (DATABASE_OWNERSHIP_CHANGE_GROUP),
ADD (DATABASE_OBJECT_OWNERSHIP_CHANGE_GROUP),
ADD (SERVER_OBJECT_OWNERSHIP_CHANGE_GROUP)
WITH (STATE = ON)

我成功删除了上面提到的服务器审核规范,但仍然无法删除相关的服务器审核。我尝试用命令禁用它

ALTER SERVER AUDIT [System Logins] WITH (STATE = OFF)
结果被什么东西屏蔽了,不让我删除。

我最激进的尝试是在单用户模式下运行 SQL Server 服务时执行此命令,同时禁用 SQL Server AgentSQL Server CEIP 服务

sql-server database-administration extended-events on-premises-instances sql-server-2022
1个回答
0
投票

好的。正如我在评论中所写,我试图删除被该服务器审计阻止的服务器审计,该服务器审计正在捕获服务器元数据的更改,这可以通过运行查询来说明:

select * from sys.dm_tran_locks where request_session_id = <that_session_id>
see sample output of the query

打个比方来说,这就像坐在树枝上砍树枝一样。

显然,仅以单用户模式运行服务器(我之前尝试过)是不够的。

解决方案是以最小配置 (-f) 启动 SQL Server,并禁用监视功能 (-x)

net start "SQL Server (MSSQLSERVER)" /x /f /mSQLCMD
然后通过在 SQLCMD 中运行语句来禁用审核:
ALTER SERVER AUDIT [System Logins]  WITH (STATE = OFF)

© www.soinside.com 2019 - 2024. All rights reserved.