示例:
假设我有一个名为group_01
的组,该组映射到SQL Server,并赋予某些权限。
当我将Active Directory中的组重命名为任何值时,请说group_01_OLD
。
组名在SQL Server中不会更改,它仍然是group_01
这是正常行为吗?在AD中重命名时,我可以强制SQL重命名组吗?
答案 0 :(得分:3)
完整的答案隐藏在这里的评论中: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];
答案 1 :(得分:3)
补充加布里埃尔的回答。根据您的方案(您已授予组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匹配,以验证登录重命名是否有效。
-Raul Garcia
答案 2 :(得分:0)
据我所知,重新启动无法解决任何问题。 SID当然是相同的,但是除了使用...更改登录名外。
ALTER LOGIN [domain\previousgroupname] WITH NAME = [domain\newgroupname];
...如果还希望更改在每个地方都能体现出来,并且登录名和用户之间不匹配,则还需要更改登录名所作用的每个数据库的Security \ Users。可以使用Management Studio来完成,可以在“安全性\登录”和“映射”中编辑组。取消勾选数据库,勾选并再次选择角色。或使用ALTER USER,但这只是更多输入。
USE [db]
ALTER USER [domain\previousgroupname] WITH NAME=[domain\newgroupname];