如何将现有的SQL Server登录名连接到同名的现有SQL Server数据库用户

157

是否有SQL Server命令可以将单个数据库的用户连接到同名的数据库服务器的登录

例如:

数据库服务器 - 默认实例
数据库:TestDB

服务器登录 - TestUser
TestDB上现有的用户 - TestUser

如果我尝试将TestUser登录作为TestDB数据库的用户,会出现“用户、组或角色已经存在”的错误。

是否有简单的方法将DB 用户分配给服务器登录

3个回答

302

从SQL 2008开始,新的方法是使用ALTER USER

ALTER USER OrphanUser WITH LOGIN = correctedLoginName;

2
自从 SQL Server 2005,Gratzy 的链接实际上是指这个。 - gbn
我刚在SQL Server 2012中使用了这个,我可以确认它有效。 - Ubercoder
已确认在 SQL Server 2019 上仍然可用。 - seagulledge
在SQL Server 2022中进行确认。 - undefined

7
我认为这是 sp_change_users_login。虽然我已经有一段时间没有使用了,但我曾在分离和重新附加数据库时使用过它。

1
如果SQL登录是使用Windows用户登录创建的,则sp_change_users_login将无法工作 - 我今天遇到了这个问题,导致我提出了这个问题。https://msdn.microsoft.com/en-us/library/ms174378.aspx - Tom Miller
此方法已被弃用,现在应使用上面的 ALTER USER 方法 - Liam
1
@liam,你真的刚刚给这个8年前的答案点了个踩,并且引用了另一个8年前的被接受的答案,而那个答案已经包含了它已经过时的信息了? - Gratzy

1

我使用了sp_change_users_login过程来完成,我认为,那个场景可以这样实现。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接