我正在尝试创build只能访问特定数据库的数据库用户帐户,并且无法读取或更改其他数据库,也无法更改任何其他帐户的凭据。
我不小心从“公共”服务器angular色中删除此用户,同时排除连接问题,从而使我的帐户从Management Studio访问服务器
获取访问权限的唯一方法是将用户添加到sysadminangular色,这是行不通的,因为用户现在可以访问所有数据库。
现在,当我尝试将用户添加回公共服务器angular色时,我收到一个错误,说明angular色中的成员身份不能更改。
奇怪的是,当我右键点击用户和查看属性,它声称用户是公共angular色的成员,并不会允许我改变成员资格。
问题:
为了获得更多的细节,下面是它应该如何看,所以你可以确切地说哪个部分是不正确的。 您有服务器的login名,以及您遇到问题的帐户的数据库用户。 在服务器和数据库级别,您将看到一个公共angular色(服务器angular色和数据库angular色)。 公共服务器angular色的属性不会显示用户,但是login的属性将显示所有数据库的公共数据库angular色(将被检查,并且不能取消选中)。 公共数据库angular色的属性也不会显示任何成员,数据库用户的属性也不会显示公共angular色。 因为这一切,我不相信你把用户从公共angular色中移除了。
如果您想尝试删除并重新创build用户,您可以先尝试进入数据库并删除数据库用户。 这将使login,你可以进入的属性,并在用户映射,应该没有数据库检查。 你应该能够现在检查数据库(因为数据库用户已经被删除),并select你需要的任何angular色。 如果这不起作用,您也可以删除与数据库用户一起login,尝试清除所有内容。 对于用户的最后一次检查,您可以运行这个SQL:
use database_name exec sp_change_users_login 'Report'
这将显示任何孤儿用户,这可能意味着您的用户仍然存在问题。 这通常可以通过以下方式解决:
use database_name exec sp_change_users_login 'Auto_Fix', 'username'
为了在这个问题再度发生之前试着把这个问题解决,可能会有其他的问题导致你的连接问题。 如果这些都不起作用,你可以发布login时得到的错误消息吗?