我有SQL Server 2012,我正在使用域用户(从Active Directory)。 错误地将用户从AD中删除,创build新的具有相同的login名和密码(但具有不同的SID),删除并恢复原来的 – 最终重新创build具有旧SID的旧用户。
几乎一切似乎都很好,除了一个用户。 SQL Server以某种方式被一个用户(所有其他用户都很好)与错误的SID陷入困境,并没有从AD得到正确的SID。 我在两个地方都检查了SID – AD中的SID与SQL Server中的SID不一样。
由于此“SID不匹配”,此用户无法访问数据库。 如果它尝试,它会失败,并得到:
我从服务器和所有使用的数据库删除了用户,然后添加 – 并再次出现错误的SID! 而这个“新”用户仍然无法连接到数据库。
有两件事“磨我的齿轮”:
我已经find了很多有关两个现有用户(或孤立?)login的不同操作,但没有发现只是改变SID。
但主要问题是 – 如何更改MS SQL Server(版本11.0)中的一个用户的SID? 这甚至有可能吗?
UPDATE
当我一直在想这个,我意识到我有一个错误的问题。 由于这个UserX是域用户,它不是SQL Server本地用户 – 这意味着我不能直接在SQL Server中更改SID。
我有两个相同的服务器(ServerA和ServerB),使用来自AD的相同用户。 在ServerB中,UserX具有正确的SID,并且可以在SQL Server中正常地进行身份validation(右侧的SID与AD中的方式相同)。 要清楚的是,UserX在ServerA中有错误的SID。
问题 – 如果此用户是来自Active Directory的域用户,那么在哪里以及如何更改其SID? 如果UserX可以在ServerB中进行身份validation,那意味着必须在Windows用户的ServerA中更改SID?
请纠正我,如果有些想法或想法走错了路。
更新2
我find了解决我的问题的办法,虽然没有回答这个问题。 对于任何感兴趣的人 – 我的大学发现删除用户AD与AD错误的SID。 该用户被更新,现在在AD,两个用户都是活跃的 – 好的和坏的 。 SQL Server认可的用户和用户login和SID不匹配问题以某种方式自行解决 – ServerA中的UserX现在具有正确的 SID并可以访问数据库。 现在一切正常! 🙂
您是否尝试通过发出以下命令来检查孤立的用户:
sp_changes_users_login 'Report'
(针对受影响的SQL Server的主数据库以及受影响服务器上的database_in_question )。
如果您有孤立的用户,则可以发出:
sp_change_users_login 'Update_one', 'Domain\UserX', 'Domain\UserX'
…针对受影响的数据库,或者如果SQLlogin映射到数据库用户问题a:
sp_change_users_login 'Update_one', 'UserX', 'Domain\UserX'
修复SID不匹配。
Microsoft站点上的sp_change_users_login语法。