我正在尝试创建一个只能访问特定数据库的 DB 用户帐户,并且不能读取或更改其他数据库,也不能更改任何其他帐户的凭据。
我在解决连接问题时意外地从“公共”服务器角色中删除了此用户,这导致我从 Management Studio 访问该帐户的服务器时出现问题
获得访问权限的唯一方法是将用户添加到 sysadmin 角色,但这行不通,因为用户现在可以访问所有数据库。
现在,当我尝试将用户添加回公共服务器角色时,出现一条错误消息,提示无法更改角色成员身份。
奇怪的是,当我右键单击用户并查看属性时,它声称该用户是公共角色的成员,并且不允许我更改成员资格。
问题:
- 因此,如果无法更改公共角色成员资格,那么我首先如何才能从角色中删除用户?
- 我如何重新添加该用户,以便重新获得该用户对管理工作室的访问权限?
答案1
为了帮助您提供更多详细信息,这里是所有内容应有的样子,以便您可以准确地说出哪个部分不正确。您有一个服务器登录名,以及一个数据库用户,该数据库是您遇到问题的帐户。在服务器和数据库级别,您将看到一个公共角色(服务器角色和数据库角色)。公共服务器角色的属性不会显示用户,但登录名的属性将显示所有数据库的公共数据库角色(它将被选中,并且您无法取消选中它)。公用数据库角色的属性也不会显示任何成员,数据库用户的属性也不会显示公共角色。由于所有这些,我认为您没有从公共角色中删除用户。
如果您想尝试删除并重新创建用户,您可以首先尝试进入数据库并删除数据库用户。这将留下登录名,您可以进入其属性,在用户映射下,应该没有选中数据库。您现在应该能够检查数据库(因为数据库用户已被删除),并选择您需要的任何角色。如果这不起作用,您还可以删除登录名和数据库用户,以尝试清除所有内容。对于用户的最后一项检查,您可以运行此 SQL:
use database_name
exec sp_change_users_login 'Report'
这将向您显示任何孤立用户,这可能意味着您的用户仍然存在问题。通常可以通过以下方法修复此问题:
use database_name
exec sp_change_users_login 'Auto_Fix', 'username'
为了在时间拖得更久之前尽快解决此问题,可能是其他原因导致了此用户的连接问题。如果这些都不起作用,您可以发布登录时收到的错误消息吗?