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


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

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

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

    正确方法如下:

    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了!

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

    本周维护窗口错过了,下个维护窗口更新。

  • 相关阅读:
    Dapper ORM 用法—Net下无敌的ORM(转)
    微軟将从 .NET 4 以后的版本弃用 System.Data.OracleClient 以及Oracle 的各种连接方法
    最火的.NET开源项目
    sql日期格式化
    项目失败总结
    C#,往线程里传参数的方法总结
    线程的几种用法
    小程序api-01-abcdefg
    cnpm
    关于mpvue和wafer2-client-sdk的 微信登录失败,请检查网络状态
  • 原文地址:https://www.cnblogs.com/xuyuchn/p/11394817.html
Copyright © 2020-2023  润新知