我的问题是非常类似于这个问题更改Windows域用户名,但原来的问题并没有明确回答我的轻微变化。
如果我更改一个Windows用户名(如果他们结婚例如)我的Sql Serverlogin为我的旧用户名创build更新,以反映更改或将不得不为更新的Windows用户创build一个新的login?
谢谢Ben
如果login绑定到域帐户,它应该没问题,因为在基本级别取决于用户的SID而不是实际的用户名。
如果新用户名不起作用,则可能需要使用以下命令重置令牌caching:
DBCC FREESYSTEMCACHE('USERSTORE_TOKENPERM');
权限应该可以继续正常工作,但是在SQL Server中显示的用户名在某些地方将是旧名称,除非您手动更新它。
虽然drop / create方法可以工作,但显然创build一个具有相同SID的重复的sqllogin似乎在这里有效,我build议只更新SQL Server中的现有loginlogging(在SQL 2012中testing)。
ALTER LOGIN [DomainName\OldUserName] WITH NAME = [DomainName\NewUserName];
这将干净地更改现有的系统loginlogging以反映该域用户(SID)的正确的新用户名。
它实际上匹配SID,而不是名称。 所以你会好的。
笔记:
通过使用下面的脚本重命名后,您可以轻松地检查它们是否具有相同的SID,并检查前后是否获得相同的SID。 假设您将Domain\LoginA重命名为Domain\LoginB :
SELECT sid FROM sys.server_principals WHERE name IN (N'Domain\LoginA')
和
SELECT sid FROM sys.server_principals WHERE name IN (N'Domain\LoginB')
应该给你相同的SID,certificate@Hyppy的观点。