sp_helprotect (Transact-SQL)

适用于: 是SQL Server(所有支持的版本)

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

重要

sp_helprotect 不返回有关中引入的安全对象的信息 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_account 的数据值为 sysname,默认值为 NULL,表示将返回当前数据库中的所有主体。 当前数据库中必须存在 security_account

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

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

返回代码值

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)