sp_helprotect (Transact-SQL)

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

重要说明重要提示

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

主题链接图标Transact-SQL 语法约定

语法

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 可以是 os 的任意组合,os 之间可以有也可以没有逗号和空格。

返回代码值

0(成功)或 1(失败)

结果集

列名

数据类型

说明

Owner

sysname

对象所有者的名称。

Object

sysname

对象的名称。

Grantee

sysname

被授予权限的主体的名称。

Grantor

sysname

向指定的被授权者进行授权的主体的名称。

ProtectType

nvarchar(10)

保护类型的名称:

GRANT REVOKE

Action

nvarchar(20)

权限的名称:

  • REFERENCES

  • SELECT

  • INSERT

  • DELETE

  • UPDATE

  • CREATE TABLE

  • CREATE DATABASE

  • CREATE FUNCTION

  • CREATE RULE

  • CREATE VIEW

  • CREATE PROCEDURE

  • EXECUTE

  • BACKUP DATABASE

  • CREATE DEFAULT

  • BACKUP LOG

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'