无法从 SQL SERVER 2012 中删除域登录

Geo*_*wdy 3 security sql-server permissions sql-server-2012

我们正在尝试清理我们 AlwaysOn 集群之一上的一些旧帐户。

这个特定的帐户拒绝玩好并允许自己被删除。

USE [master]
GO
DROP LOGIN [PROD\dba007]
GO
Run Code Online (Sandbox Code Playgroud)

错误:

Msg 15173, Level 16, State 1, Line 4
Server principal 'PROD\dba007' has granted one or more permission(s). Revoke the permission(s) before dropping the server principal.
Run Code Online (Sandbox Code Playgroud)

它抱怨的权限是对 HADR_ENDPOINT 的连接权限

Select perm.* from sys.server_permissions  perm
INNER JOIN sys.server_principals prin ON perm.grantor_principal_id = prin.principal_id
where prin.name = N'PROD\dba007'

class   class_desc  type    permission_name state   state_desc
105     ENDPOINT    CO      CONNECT         G       GRANT
Run Code Online (Sandbox Code Playgroud)

现在下一个合乎逻辑的事情是撤销连接权限。

USE master;
REVOKE CONNECT ON ENDPOINT ::HADR_endpoint from [PROD\dba007]
Run Code Online (Sandbox Code Playgroud)

但这会产生消息

Cannot grant, deny, or revoke permissions to sa, dbo, entity owner, information_schema, sys, or yourself.
Run Code Online (Sandbox Code Playgroud)

它作为成员的唯一服务器角色是 PUBLIC。

我如何才能找出究竟是什么阻止了我撤销这些权限,以便我可以删除用户?

谢谢。

Bre*_*zar 8

检查他们是否拥有端点本身:

SELECT SUSER_NAME(principal_id) AS endpoint_owner ,name AS endpoint_name
FROM sys.database_mirroring_endpoints;
Run Code Online (Sandbox Code Playgroud)

如果是这样,您将需要更改端点所有者。假设端点名为 Mirroring,并且您想将所有者更改为 SA:

ALTER AUTHORIZATION ON ENDPOINT::Mirroring TO sa;
Run Code Online (Sandbox Code Playgroud)