sp_helprotect (Transact-SQL)
返回一个报表,报表中包含当前数据库中某对象的用户权限或语句权限的信息。
重要提示: |
---|
sp_helprotect 不会返回有关 SQL Server 2005 中引入的安全对象的信息。请改用 sys.database_permissions 和 fn_builtin_permissions。 |
语法
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 DATABASE
- CREATE DEFAULT
- CREATE FUNCTION
- CREATE PROCEDURE
- CREATE RULE
- CREATE TABLE
- CREATE VIEW
- BACKUP DATABASE
- BACKUP LOG
- [ @username = ] 'security_account'
为其返回权限的主体的名称。security_account 的数据类型为 sysname,默认值为 NULL,表示将返回当前数据库中的所有主体。security_account 必须存在于当前数据库中。
- [ @grantorname = ] 'grantor'
授予权限的主体的名称。grantor 的数据类型为 sysname,默认值为 NULL,表示将返回数据库中任意主体授予的权限的全部信息。
- [ @permissionarea = ] 'type'
指示是显示对象权限(字符串 o)、语句权限(字符串 s)还是同时显示两者 (os) 的字符串。type 的数据类型为 varchar(10),默认值为 os。type 可以是 o 和 s 的任意组合,o 和 s 之间可以有也可以没有逗号和空格。
返回代码值
0(成功)或 1(失败)
结果集
列名 | 数据类型 | 说明 |
---|---|---|
Owner |
sysname |
对象所有者的名称。 |
Object |
sysname |
对象的名称。 |
Grantee |
sysname |
被授予权限的主体的名称。 |
Grantor |
sysname |
向指定的被授权者进行授权的主体的名称。 |
ProtectType |
nvarchar(10) |
保护类型的名称: GRANT REVOKE |
Action |
nvarchar(20) |
权限的名称:
|
Column |
sysname |
权限的类型: 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'
请参阅
参考
安全存储过程 (Transact-SQL)
DENY (Transact-SQL)
GRANT (Transact-SQL)
REVOKE (Transact-SQL)
系统存储过程 (Transact-SQL)