sp_helprotect (Transact-SQL)

适用于:SQL Server

返回一个报表,报表中包含当前数据库中某对象的用户权限或语句权限的信息。

重要

sp_helprotect不会返回有关 2005 SQL Server 2005 (9.x) 中引入的安全对象的信息。 请改用 sys.database_permissionsfn_builtin_permissions

不列出始终分配给固定服务器角色或固定数据库角色的权限。 不包括基于其在角色中的成员身份接收权限的登录名或用户。

Transact-SQL 语法约定

语法

  
sp_helprotect [ [ @name = ] 'object_statement' ]   
     [ , [ @username = ] 'security_account' ]   
     [ , [ @grantorname = ] 'grantor' ]   
     [ , [ @permissionarea = ] 'type' ]  

自变量

[ @name = ] 'object_statement' 当前数据库中的对象的名称,或具有报告权限的 语句。 object_statementnvarchar (776) ,默认值为 NULL,返回所有对象和语句权限。 如果值为一个对象(表、视图、存储过程或扩展存储过程),则该对象必须是当前数据库中的有效对象。 对象名称可以在表单所有者中包含所有者限定符对象

如果 object_statement 是语句,它可以是 CREATE 语句。

[ @username = ] 'security_account' 为其返回权限的主体的名称。 security_accountsysname,默认值为 NULL,返回当前数据库中的所有主体。 当前 数据库中必须存在security_account。

[ @grantorname = ] 'grantor' 授予权限的主体的名称。 grantorsysname,默认值为 NULL,返回数据库中任何主体授予的权限的所有信息。

[ @permissionarea = ] 'type' 是一个字符串,指示是要显示对象权限 (字符串 o) 、语句权限 (字符串) ,还是同时显示两者 (os) 。 类型varchar (10) ,默认值为 ostype 可以是 os 的任意组合, o 和s 之间有或不带逗号或空格。

返回代码值

0(成功)或 1(失败)

结果集

列名称 数据类型 说明
所有者 sysname 对象所有者的名称。
Object sysname 对象的名称。
被授权者 sysname 被授予权限的主体的名称。
授权者 sysname 向指定的被授权者进行授权的主体的名称。
ProtectType nvarchar(10) 保护类型的名称:

GRANT REVOKE
操作 nvarchar(60) 权限的名称。 依赖于对象类型的有效的权限语句。
sysname 权限的类型:

All = 权限适用于对象所有的当前列。

New = 权限适用于任何以后可以在对象上进行更改(使用 ALTER 语句)的新列。

All+New = All 和 New 的组合。

如果权限类型不适用于列,则返回一个期间。

备注

以下过程中的所有参数都是可选的。 如果不使用参数执行 sp_helprotect,则显示当前数据库中所有已经授予或拒绝的权限。

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

EXEC sp_helprotect NULL, NULL, dbo;  

EXEC sp_helprotect @grantorname = 'dbo';  

输出报表按权限类别、所有者、对象、被授权者、授权者、保护类型类别、保护类型、操作以及列连续 ID 进行排序。

权限

要求 公共 角色具有成员身份。

返回的信息取决于对元数据的访问权限的限制。 主体对其不具有权限的实体将不会显示。 有关详细信息,请参阅 Metadata Visibility Configuration

示例

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';   

e. 列出 CREATE 语句的权限

下面的示例列出授予了 CREATE TABLE 权限的所有用户。

EXEC sp_helprotect @name = 'CREATE TABLE';  

另请参阅

安全存储过程 (Transact-SQL)
DENY (Transact-SQL)
GRANT (Transact-SQL)
REVOKE (Transact-SQL)
系统存储过程 (Transact-SQL)