因为配置了Always-On导致的无法Drop Login…

一个sysadmin离职了,但是因为之前是他配置的always-on,所以试图drop他的login就会失败,原因是这个login会赋予一个叫做“hadr_endpoint”的endpoint权限,并且是这个endpoint的owner。

如果直接尝试revoke,会提示错误,无法revoke。

也不要尝试什么修改login名字啊,更新master数据库啊这些。。。都是徒劳,更没必要卸载实例。

正确方法如下:

1.运行脚本,确认endpoint的owner和授予的权限:

use master; 
 
select suser_name(principal_id) as endpoint_owner ,name as endpoint_name 
from sys.database_mirroring_endpoints; 
 

select eps.name, sps.state, convert(nvarchar(38), suser_name(sps.grantor_principal_id))as [granted by], sps.type as permission, convert(nvarchar(46),suser_name(sps.grantee_principal_id))as [granted to] 
from sys.server_permissions sps , sys.endpoints eps where sps.major_id = eps.endpoint_id and name = 'hadr_endpoint'
order by permission,[granted by], [granted to]; 

 

2.运行脚本,更改endpint的owner,并赋予这个新的owner和原来一样的权限:

begin tran

use master; 

alter authorization on endpoint::hadr_endpoint to sa;  

grant connect on endpoint::hadr_endpoint to [sql login 1]; 
grant connect on endpoint::hadr_endpoint to [sql login 2]; 

commit 

 

3.可以drop in原来的login了!

 

其实还没实践。。。要等到下个维护窗口了,实践完之后再来更新。

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐