摘自: http://www.yesky.com/imagesnew/software/tsql/ts_sp_help_1rxw.htm
sp_helprotect
返回一个报表,报表中包含当前数据库中某对象的用户权限或语句权限的信息。
语法
sp_helprotect [ [ @name =] 'object_statement']
[ ,[ @username =] 'security_account']
[ ,[ @grantorname =] 'grantor']
[ ,[ @permissionarea =] 'type']
列名数据类型描述
Owner
sysname
对象所有者的名称。
Object
sysname
对象的名称。
Grantee
sysname
被授予权限的用户的名称。
Grantor
sysname
向指定的被授权限用户进行授权的用户的名称。
ProtectType
char(10)
保护类型的名称:
GRANT
REVOKE
Action
varchar(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'