我想授予对SQL Server登录数据库的访问权限。我知道sp_grantdbaccess,但不推荐使用它。我可以使用什么,以及如何检查登录是否还无法访问数据库?
场景:UserA创建数据库 - 在sys.database_principals中,我有一个名为dbo的条目,以及用户的sid。我尝试再次授予UserA权限:我尝试通过name ='UserA'对sys.database_principals进行选择,但由于名称是dbo而不是UserA,我收到错误 - '登录已经有一个不同用户名下的帐户'。如何在没有sid的情况下确定用户是否具有数据库访问权限?
答案 0 :(得分:2)
您可能需要CREATE USER
e.g。
CREATE USER bobuser FOR LOGIN boblogin
sys.database_principals安全目录有一个数据库用户列表,因此您可以确保您没有该名称的用户。
答案 1 :(得分:0)
首先,您需要在该数据库中为相关登录创建一个用户。为此,请使用Create User
。如果要确定用户是否已存在,可以通过过滤sys.database_principals
来使用type = 'U'
目录视图。如果您想确定某个用户是否已加入某个角色,可以使用sys.database_role_members
。