我遇到了Windows登录sql 2008 r2服务器的问题。
在活动目录中创建了一个用户,可以称他为“mydomain \ jon.doe”,并在SQL服务器上创建了一个Windows登录名。
由于交换存在问题,此AD帐户已被删除,而新创建的帐户仍称为“mydomain \ jon.doe”
我运行以下命令从我的sql server中删除旧用户......
EXECUTE('USE ' + @Database + ' IF EXISTS (SELECT [name] FROM sys.Schemas WHERE [name] = ''' + @FullyQualifiedUserName + ''') BEGIN DROP SCHEMA [' + @FullyQualifiedUserName + '] PRINT ''Deletion '' END')
EXECUTE('USE ' + @Database + ' IF EXISTS (SELECT [name] FROM sys.Schemas WHERE [name] = ''' + @SimpleUserName + ''') BEGIN DROP SCHEMA [' + @SimpleUserName + '] PRINT ''Deletion '' END')
EXECUTE('USE ' + @Database + ' IF EXISTS (SELECT [name] FROM sys.database_principals WHERE [name] = ''' + @FullyQualifiedUserName + ''') BEGIN DROP USER [' + @FullyQualifiedUserName + '] PRINT ''Deletion '' END')
EXECUTE('USE ' + @Database + ' IF EXISTS (SELECT [name] FROM sys.database_principals WHERE [name] = ''' + @SimpleUserName + ''') BEGIN DROP USER [' + @SimpleUserName + '] PRINT ''Deletion '' END')
然而,当我重新将“mydomain \ jon.doe”添加到sql server时,它似乎保留了旧的SID而不是新AD帐户的SID?
到目前为止我已经尝试过了......但没有运气
DBCC FREESYSTEMCACHE('ALL')
答案 0 :(得分:1)
解决方法可能是在Active Directory中创建一个仅包含“mydomain \ jon.doe”的组,并为该组添加SQL登录。
答案 1 :(得分:0)
您的代码显示数据库用户丢弃,但您是否从服务器中删除了LOGIN?
[your user drops]
Use master
go
DROP LOGIN [mydomain\jon.doe];
如果没有,则SQL Server仍然使用旧SID链接到AD用户。
如果你跑
xp_logininfo 'mydomain\jon.doe'
...你得到错误0x534吗?如果是这样,那么你肯定需要这样做:
这将清除SQL Server中的旧SID,您将再次正常工作。