Sql server 更改数据库服务器上现有SQL用户的登录名(Windows用户)
我们有一个SQL 2012数据库,我们的用户通过Windows身份验证设置为连接到特定的数据库,比如DatabaseA 它看起来是这样的:Windows用户“DomainA/abcd”被映射到数据库a中的一个用户“abcd”,该用户拥有一个默认的架构“abcd”,而该架构又拥有一组表。远程用户登录到他们的笔记本电脑(作为DomainA/abcd),通过VPN连接,并能够从SQL server查询数据(他们根据自己的Windows登录从默认模式中提取数据) 这一切都很好,但是,现在我们正在进入一个新的领域 我们的用户将以“DomainB/abcd”登录,当他们尝试连接到服务器上的表时,不会返回任何数据,因为“DomainA/abcd”和“DomainB/abcd”是不同的用户 我想实现什么:我可以让当前映射到Windows登录名“DomainA/abcd”的DB用户“abcd”指向Windows登录名“DomainB/abcd”吗。这可能吗 如果没有,还有什么选择。我们希望避免删除模式/表和用户,然后重新创建所有内容 我尝试了什么:我尝试了Sql server 更改数据库服务器上现有SQL用户的登录名(Windows用户),sql-server,sql-server-2012,Sql Server,Sql Server 2012,我们有一个SQL 2012数据库,我们的用户通过Windows身份验证设置为连接到特定的数据库,比如DatabaseA 它看起来是这样的:Windows用户“DomainA/abcd”被映射到数据库a中的一个用户“abcd”,该用户拥有一个默认的架构“abcd”,而该架构又拥有一组表。远程用户登录到他们的笔记本电脑(作为DomainA/abcd),通过VPN连接,并能够从SQL server查询数据(他们根据自己的Windows登录从默认模式中提取数据) 这一切都很好,但是,现在我们正在进入一个
ALTER USER
和sp\u change\u users\u login
,但没有成功
ALTER USER[DomainB\abcd]WITH LOGIN=[abcd]
返回无法将用户重新映射到登录名'abcd',因为该登录名已映射到数据库中的用户。
-非常合理
EXEC sp\u change\u用户登录“Update\u One”、“abcd”、“DomainB\abcd”;GO
返回终止此过程。用户名“abcd”不存在或无效。
-表示这可用于将db用户映射到新的SQL登录,但未提及Windows登录
我是DB server上sysadmin角色的成员,因此我认为这不是权限问题。当SQL server用户域名更改时,此时,我们仍希望保留当前数据库用户设置,不希望重新创建这些用户,我们可以使用SQL脚本更新用户域,如下所示:
ALTER USER [abcd] WITH LOGIN = [DomainB\abcd], NAME = [abcd]
我很高兴这对你有用。你必须先删除
用户
[DomainA\abcd]
,然后才能创建用户
[DomainB\abcd]
登录
abcd
@Lamu-在我删除用户[DomainA\abcd]
之后,创建用户[DomainB\abcd]
,它仍然不允许我将abcd
与[DomainB\abcd]
关联,不断告诉我abcd
映射到了另一个用户。然后用户[DomainA\abcd]
没有像您的问题所述映射到abcd
。因此,它映射到哪个用户?从sys.syslogins l中选择dp.[name]加入sys.database_principals dp on l.sid=dp.sid,其中l.[name]=N'abcd'
return?@Lamu-您使用…其中l.[name]=N'abcd'
的查询不返回任何内容,但使用…其中l.[name]=N'DOMAINA\abcd'
返回abcd
本质上,登录名是DOMAINA\abcd
,主体是abcd