我们有一个SQL 2012数据库,我们的用户通过Windows身份验证设置为连接到特定数据库-例如DatabaseA。
它看起来像这样: Windows用户“ DomainA / abcd ”被映射到用户“ abcd DatabaseA中的“>”,它具有默认的 schema “ abcd ”,而该表又拥有一堆表。远程用户登录到他们的笔记本电脑(作为DomainA / abcd),通过VPN连接,并能够从SQL Server查询数据(他们根据Windows登录名从默认架构中提取数据)。
一切正常,但是,现在我们正在转移到新域。
我们的用户将以“ DomainB / abcd”身份登录,并且当他们尝试连接到服务器上的其表时,由于“ DomainA / abcd”和“ DomainB / abcd”是不同的用户。
我要实现的目标:我能否获取当前映射到Windows登录名“ DomainA / abcd”的数据库用户“ abcd”,以指向Windows登录名“ DomainB / abcd”。那有可能吗?
如果没有,有什么替代方法。我们希望避免删除架构/表和用户,然后再次重新创建所有内容。
我尝试了什么:我尝试了ALTER USER
和sp_change_users_login
无济于事。
ALTER USER [DomainB\abcd] WITH LOGIN = [abcd]
返回Cannot remap user to login 'abcd',because the login is already mapped to a user in the database.
-非常合理。
EXEC sp_change_users_login 'Update_One','abcd','DomainB\abcd'; GO
返回Terminating this procedure. The User name 'abcd' is absent or invalid.
-MSDN说这可用于将数据库用户映射到新的SQL登录名,而没有提及Windows登录名。
我是数据库服务器上sysadmin角色的成员,所以我认为这不是权限问题。