You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

重命名EntraID安全组后,如何更新Azure SQL对应的服务器主体名称?

问题描述
  • 创建了名为sql-users的EntraID安全组,在Azure SQL服务器级创建了外部提供者登录,并在指定数据库级基于该登录创建用户,此前使用无异常。
  • 将EntraID安全组重命名为sql-readonly-users后,sys.server_principals中仍显示旧名称sql-users。
  • 执行CREATE LOGIN [sql-readonly-users] FROM EXTERNAL PROVIDER时,报错:Msg 15025, Level 16, State 8, Line 1 服务器主体 'sql-users' 已存在。
  • 执行ALTER LOGIN [sql-users] WITH NAME = [sql-readonly-users]时,报错:Msg 40597, Level 16, State 1, Line 14 外部登录不支持关键字或语句选项 'WITH_NAME_OR_PASSWORD'。
  • 重启服务器方案不适用于Azure SQL,需解决如何更新服务器主体名称以匹配EntraID组的新名称。
解决方案

由于Azure SQL的外部登录(关联EntraID主体)无法直接通过ALTER LOGIN重命名,正确处理步骤如下:

  1. 备份权限与关联关系

    • 查询原登录的服务器级权限:
      USE master;
      SELECT * FROM sys.server_permissions WHERE grantee_principal_id = (SELECT principal_id FROM sys.server_principals WHERE name = 'sql-users');
      
    • 查询目标数据库(替换为你的数据库名)内用户的权限和角色成员:
      USE YourDatabase;
      SELECT * FROM sys.database_permissions WHERE grantee_principal_id = (SELECT principal_id FROM sys.database_principals WHERE name = 'sql-users');
      SELECT * FROM sys.database_role_members WHERE member_principal_id = (SELECT principal_id FROM sys.database_principals WHERE name = 'sql-users');
      
    • 记录所有权限、角色信息,用于后续恢复。
  2. 删除原登录与数据库用户

    • 切换到目标数据库,删除关联用户:
      USE YourDatabase;
      DROP USER [sql-users];
      
    • 切换到master库,删除服务器级登录:
      USE master;
      DROP LOGIN [sql-users];
      
  3. 创建新的外部登录与数据库用户

    • 创建对应新EntraID组的服务器登录:
      USE master;
      CREATE LOGIN [sql-readonly-users] FROM EXTERNAL PROVIDER;
      
    • 在目标数据库创建关联用户:
      USE YourDatabase;
      CREATE USER [sql-readonly-users] FOR LOGIN [sql-readonly-users];
      
  4. 恢复权限与角色

    • 根据备份的信息,重新赋予服务器级权限,示例:
      USE master;
      GRANT VIEW SERVER STATE TO [sql-readonly-users];
      
    • 恢复数据库级权限和角色,示例:
      USE YourDatabase;
      GRANT SELECT ON SCHEMA::dbo TO [sql-readonly-users];
      ALTER ROLE db_datareader ADD MEMBER [sql-readonly-users];
      

注意事项

  • 操作前确保无用户正在使用该登录/用户,避免会话冲突。
  • 若该登录关联多个数据库,需对每个数据库重复删除用户、创建新用户并恢复权限的操作。

内容的提问来源于stack exchange,提问作者kennyh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 13:51:25