首页 > 数据库 > SQL Server > 正文

使用SQL语句获取SQL Server数据库登录用户权限

2024-08-31 00:47:55
字体:
来源:转载
供稿:网友
sp_helprotect
返回一个报表,报表中包含当前数据库中某对象的用户权限或语句权限的信息。
语法
sp_helprotect [ [ @name = ] 'object_statement' ]    [ , [ @username = ] 'security_account' ]    [ , [ @grantorname = ] 'grantor' ]    [ , [ @permissionarea = ] 'type' ]
参数
[@name =] 'object_statement'

是当前数据库中要报告其权限的对象或语句的名称。object_statement 的数据类型为 nvarchar(776),默认值为 null,此默认值将返回所有的对象及语句权限。如果值是一个对象(表、视图、存储过程或扩展存储过程),那么它必须是当前数据库中一个有效的对象。对象名称可以包含所有者限定符,形式为 owner.object。

如果 object_statement 是一个语句,则可以为:
create databasecreate defaultcreate functioncreate procedurecreate rulecreate tablecreate viewbackup databasebackup log
[@username =] 'security_account'

是返回其权限的安全帐户名称。security_account 的数据类型为 sysname,默认值为 null,这个默认值将返回当前数据库中所有的安全帐户。security_account 必须是当前数据库中的有效安全帐户。当指定 microsoft® windows nt® 用户时,请指定该 windows nt 用户在数据库中可被识别的名称(用 sp_grantdbaccess 添加)。

[@grantorname =] 'grantor'

是已授权的安全帐户的名称。grantor 的数据类型为 sysname,默认值为 null,这个默认值将返回数据库中任何安全帐户所授权限的所有信息。当指定 windows nt 用户时,请指定该 windows nt 用户在数据库中可被识别的名称(用 sp_grantdbaccess 添加)。

[@permissionarea =] 'type'

是一个字符串,表示是显示对象权限(字符串 o)、语句权限(字符串 s)还是两者都显示 (o s)。type 的数据类型为 varchar(10),默认值为 o s。type 可以是 o 和 s 的任意组合,在 o 和 s 之间可以有也可以没有逗号或空格。
返回代码值
0(成功)或 1(失败)
结果集列名数据类型描述ownersysname对象所有者的名称。objectsysname对象的名称。granteesysname被授予权限的用户的名称。grantorsysname向指定的被授权限用户进行授权的用户的名称。protecttypechar(10)保护类型的名称:
grantrevoke
actionvarchar(20)权限的名称:
referencesselectinsertdeleteupdatecreate tablecreate databasecreate functioncreate rulecreate viewcreate procedureexecutebackup databasecreate defaultbackup log
columnsysname权限的类型:
all = 权限适用于对象所有的当前列。new = 权限适用于任何以后可以在对象上进行修改(使用 alter 语句)的新列。all+new = all 和 new 的组合。
注释
该过程的所有参数都是可选的。如果不带参数执行 sp_helprotect,将显示当前数据库中所有已经授予或拒绝的权限。

如果指定了一部分参数,而不是指定全部参数,请使用命名参数来标识特定的参数,或者使用 null 作为占位符。例如,若要报告授予方 dbo 的所有权限,请执行:

exec sp_helprotect null, null, dbo



exec sp_helprotect @grantorname = 'dbo'

输出报表按权限分类、所有者、对象、被授予方、授予方、保护类型分类、保护类型、动作以及列连续 id 进行排序。
权限
执行权限默认授予 public 角色。
示例a. 列出某个表的权限
下面的示例列出了表 titles 的权限。

exec sp_helprotect 'titles'
b. 列出某个用户的权限
下面的示例列出当前数据库中用户 judy 所拥有的所有权限。

exec sp_helprotect null, 'judy'
c. 列出由某个特定的用户授予的权限
下面的示例列出了当前数据库中由用户 judy 授予的所有权限,使用 null 作为缺少的参数的占位符。

exec sp_helprotect null, null, 'judy'
d. 仅列出语句权限
下面的示例列出当前数据库中所有的语句权限,使用 null 作为缺少的参数的占位符。

exec sp_helprotect null, null, null, 's'
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表