示例:
假设我有一个名为
group_01
的组,该组映射到 SQL Server,并在某些内容上拥有一些权限。
当我将 Active Directory 中的组重命名为任意值时,可以说
group_01_OLD
。
SQL Server中的组名不会改变,仍然是group_01
这是正常行为吗?在 AD 中重命名组时可以强制 SQL 重命名该组吗?
为了补充Gabriel的答案,考虑到您的场景(您已向组授予权限
group_01
),您必须使用ALTER LOGIN命令在SQL中更改名称
ALTER LOGIN [domain\group_01] WITH NAME = [domain\group_01_OLD];
原因是 SQL Server 在询问 AD 之前会在 SQL 本身内查找匹配的登录目录视图(即
sys.server_principals
)。
注意:当您重命名 Windows 登录名时,SQL Server 将验证新名称是否与 SID 匹配,以验证登录名重命名是否有效。
完整的答案隐藏在此处的评论中:https://dba.stackexchange.com/questions/13766/user-windows-login-name-has-been-changed-in-ad-yet-session-in- sql-2008-profiler
基本上,重新启动整个服务器应该会看到更改(假设已经复制到所有 DC)。
如果您无法做到这一点,您可以尝试手动更新登录名:
ALTER LOGIN [domain\group_01] WITH NAME = [domain\group_01_OLD];
ALTER LOGIN [domain\previousgroupname] WITH NAME = [domain\newgroupname];
...如果您希望更改反映在所有地方并且登录名和用户之间不存在不匹配,您还需要更改登录名在其中发挥作用的每个数据库的 Security\Users 。可以使用 Management studio 来完成,在 Security\Logins 和 Mapping 中编辑组。取消勾选数据库,勾选并再次选择角色。或者使用 ALTER USER 但这只是需要更多的输入。
USE [db]
ALTER USER [domain\previousgroupname] WITH NAME=[domain\newgroupname];