返回一个报表,报表中包含当前数据库中某对象的用户权限或语句权限的信息。
语法
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 PROCE<?xml:namespace prefix = st1 ns = "Tencent" />DURE
CREATE RULE
CREATE TABLE
CREATE VIEW
BACKUP DATABASE
BACKUP LOG
[@username =] 'security_account'
是返回其权限的安全帐户名称。
security_account
的数据类型为
sysname
,默认值为
NULL
,这个默认值将返回当前数据库中所有的安全帐户。
security_account
必须是当前数据库中的有效安全帐户。当指定
Microsoft® Windows NT®
用户时,请指定该
Windows NT
用户在数据库中可被识别的名称(用
sp_grantdbaccess
添加)。
[@grantorname =] 'grantor'
是已授权的安全帐户的名称。
grantor
的数据类型为
sysname
,默认值为
NULL
,这个默认值将返回数据库中任何安全帐户所授权限的所有信息。当指定
Windows NT
用户时,请指定该
Windows NT
用户在数据库中可被识别的名称(用
sp_grantdbaccess
添加)。
[@permissionarea =] 'type'
是一个字符串,表示是显示对象权限(字符串
o
)、语句权限(字符串
s
)还是两者都显示
(o s)
。
type
的数据类型为
varchar(10)
,默认值为
o s
。
type
可以是
o
和
s
的任意组合,在
o
和
s
之间可以有也可以没有逗号或空格。
返回代码值
0
(成功)或
1
(失败)
结果集
列名
数据类型
描述
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'
转载于:https://blog.51cto.com/wcxsky/51883