sp_helprotect (Transact-SQL)
适用于:SQL Server
返回一个报表,报表中包含当前数据库中某对象的用户权限或语句权限的信息。
重要
sp_helprotect不会返回有关 2005 SQL Server 2005 (9.x) 中引入的安全对象的信息。 请改用 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,返回所有对象和语句权限。 如果值为一个对象(表、视图、存储过程或扩展存储过程),则该对象必须是当前数据库中的有效对象。 对象名称可以在表单所有者中包含所有者限定符。对象。
如果 object_statement 是语句,它可以是 CREATE 语句。
[ @username = ] 'security_account'
为其返回权限的主体的名称。 security_account 为 sysname,默认值为 NULL,返回当前数据库中的所有主体。 当前 数据库中必须存在security_account。
[ @grantorname = ] 'grantor'
授予权限的主体的名称。 grantor 为 sysname,默认值为 NULL,返回数据库中任何主体授予的权限的所有信息。
[ @permissionarea = ] 'type'
是一个字符串,指示是要显示对象权限 (字符串 o) 、语句权限 (字符串) ,还是同时显示两者 (os) 。 类型 为 varchar (10) ,默认值为 os。 type 可以是 o 和 s 的任意组合, 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)
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈