2010-05-18 167 views
0

我想授予对SQL Server登录数据库的访问权限。我知道sp_grantdbaccess,但它已被弃用。我可以使用什么,以及如何检查登录是否无法访问数据库?授予SQL Server登录访问数据库的权限 - SQL Server

场景:UserA创建数据库 - 在sys.database_principals我有一个名为dbo和UserA的sid的条目。我尝试再次授予UserA权限:我尝试通过名称='UserA'在sys.database_principals上执行选择,但由于名称是dbo而不是UserA,因此出现错误 - '该登录帐户已经拥有不同用户名下的帐户'。我如何确定用户是否在没有sid的情况下访问数据库?

回答

2

您可能想要CREATE USER

例如,

CREATE USER bobuser FOR LOGIN boblogin 

sys.database_principals安全目录对数据库用户的列表,这样可以保证你不已经有一个使用该名称。

+0

如果用户已经拥有数据库访问权限,它将返回一个错误。我如何验证用户是否具有数据库访问权限? – kjv 2010-05-18 14:56:34

+2

你可以运行一个查询,如'if not exists(select * from sys.database_principals where name ='bobuser')begin create user ...'等等,看看它是否存在 – 2010-05-18 15:00:16

0

首先,您需要在该数据库中为有问题的登录创建一个用户。要做到这一点,请使用Create User。如果要确定用户是否已经存在,则可以通过筛选type = 'U'来使用sys.database_principals目录视图。如果您想确定给定用户是否已经在某个角色中,则可以使用sys.database_role_members

相关问题