授予对数据库的 SQL Server 登录访问权限 - SQL Server
Posted
技术标签:
【中文标题】授予对数据库的 SQL Server 登录访问权限 - SQL Server【英文标题】:Granting a SQL Server Login Access to a Database - SQL Server 【发布时间】:2011-02-20 22:40:05 【问题描述】:我想为 SQL Server 登录授予对数据库的访问权限。我知道 sp_grantdbaccess,但它已被弃用。我可以改用什么?如何检查登录名是否还没有访问数据库的权限?
场景:UserA 创建数据库 - 在 sys.database_principals 我有一个名为 dbo 和 UserA sid 的条目。我尝试再次授予 UserA 权限:我尝试通过 name='UserA' 在 sys.database_principals 上进行选择,但是由于名称是 dbo 而不是 UserA,我收到错误 - '登录已经有一个不同用户名下的帐户.'.在没有 sid 的情况下如何确定用户是否具有数据库访问权限?
【问题讨论】:
【参考方案1】:你可能想要CREATE USER
例如
CREATE USER bobuser FOR LOGIN boblogin
sys.database_principals 安全目录有一个数据库用户列表,因此您可以确保您没有同名的用户。
【讨论】:
如果用户已经拥有数据库访问权限,则会返回错误。如何验证用户是否具有数据库访问权限? 你可以先运行if not exists(select * from sys.database_principals where name='bobuser') begin create user...
之类的查询,看看它是否存在【参考方案2】:
首先,您需要在该数据库中为相关登录创建一个用户。为此,请使用Create User
。如果要确定用户是否已经存在,可以通过过滤type = 'U'
来使用sys.database_principals
目录视图。如果要确定给定用户是否已经在某个角色中,可以使用sys.database_role_members
。
【讨论】:
以上是关于授予对数据库的 SQL Server 登录访问权限 - SQL Server的主要内容,如果未能解决你的问题,请参考以下文章