如果我更改Windows域用户名,我的SQL Serverlogin会发生什么情况

我的问题是非常类似于这个问题更改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,而不是名称。 所以你会好的。

笔记:

  • 这是一个Windowslogin你的意思。 SQL Serverlogin不与Windows用户关联。
  • 最佳做法是使用Windows组的权限,而不是单个的Windows用户

通过使用下面的脚本重命名后,您可以轻松地检查它们是否具有相同的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的观点。