根据一个用户登录名字用一条SQL语句查询出来这个用户对那些数据库及表分别有哪些权限。

ivorxiao 2006-09-01 09:01:56
如题
...全文
775 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xyxfly 2006-09-01
  • 打赏
  • 举报
回复
sp_helprotect
返回一个报表,报表中包含当前数据库中某对象的用户权限或语句权限的信息。

语法
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 必须是当前数据库中的有效安全帐户。当指定

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
xyxfly 2006-09-01
  • 打赏
  • 举报
回复
系统的存储进程 sp_helprotect, 在当前的SQL Server服务器中鉴别许可. 系统进程接受四个可选参数:
  
  @name: 这个是数据库对象名. 这个参数的值可能可能是一个语句许可。
  @username: 这个是数据库中用户的账号.这个可能是标准的SQL Server登陆或者一个Windows用户或者组登陆,它们都是数据库用户账号。
  @grantorname: 这个是已经授予数据库对象许可的数据库用户账号名。
  @permissionarea: 这个参数可能返回o或者s,也有可能两个一起返回。
  
  @name参数的有效语句可能是下面的其中一个:
  
  CREATE DATABASE
  CREATE DEFAULT
  CREATE FUNCTION
  CREATE PROCEDURE
  CREATE RULE
  CREATE TABLE
  CREATE VIEW
  BACKUP DATABASE
  BACKUP LOG
  如果没有参数被使用,sp_helprotect将返回所有被授予的许可或者拒绝所有的对象和语句许可。为了从这个进程获得输出更好的可读性,你需要以各自的形式来查看结果。
  
  下面的脚本将展示sp_helprotect如何使用并在 Northwind 数据库中运行:
  
  USE Northwind
  GO
  EXEC sp_helprotect @name = 'Orders'
  GO
  EXEC sp_helprotect @permissionarea = 's'
  GO
  EXEC sp_helprotect @permissionarea = 'o'
  GO
  EXEC sp_helprotect @permissionarea = 's o'
  GO
  
  首个sp_helprotect语句将会返回Orders表格的许可。其他三个系统存储进程语句将返回基于 @permissionarea参数的结果。


不知道符合你要求不?
xyxfly 2006-09-01
  • 打赏
  • 举报
回复
sp_helprotect ?
leongwong 2006-09-01
  • 打赏
  • 举报
回复
关注!

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧