更改SQL Server用户SID

我有SQL Server 2012,我正在使用域用户(从Active Directory)。 错误地将用户从AD中删除,创build新的具有相同的login名和密码(但具有不同的SID),删除并恢复原来的 – 最终重新创build具有旧SID的旧用户。

几乎一切似乎都很好,除了一个用户。 SQL Server以某种方式被一个用户(所有其他用户都很好)与错误的SID陷入困境,并没有从AD得到正确的SID。 我在两个地方都检查了SID – AD中的SID与SQL Server中的SID不一样。

由于此“SID不匹配”,此用户无法访问数据库。 如果它尝试,它会失败,并得到:

  • “错误:18456,严重性:14,状态:5。
  • 用户“DomainX \ UserX”login失败。 原因:找不到与提供的名称相匹配的login信息。

我从服务器和所有使用的数据库删除了用户,然后添加 – 并再次出现错误的SID! 而这个“新”用户仍然无法连接到数据库。

有两件事“磨我的齿轮”:

  1. 其他用户的SID如何匹配,只有一个不匹配?
  2. 如果其他用户没有问题(他们得到旧的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语法。