sqlSQL数据库怎么批量为存储过程函数授权呢?
本文整理自网络,侵删。
在工作当中遇到一个类似这样的问题:要对数据库账户的权限进行清理、设置,其中有一个用户Test,只能拥有数据库MyAssistant的DML(更新、插入、删除等)操作权限,另外拥有执行数据库存储过程、函数的权限,但是不能进行DDL操作(包括新建、修改表、存储过程等...),于是需要设置登录名Test的相关权限:
1:右键单击登录名Test的属性.
2: 在服务器角色里面选择"public"服务器角色。
3:在用户映射选项当中,选择"db_datareader"、"db_datawriter"、"public"三个数据库角色成员。
此时,已经实现了拥有DML操作权限,如果需要拥有存储过程和函数的执行权限,必须使用grant语句去授权,一个生产库的存储过程和函数加起来成千上百,如果手工执行的话,那将是一个辛苦的体力活,而我手头有十几个库,所以必须用脚本去实现授权过程。下面是我写的一个存储过程,亮点主要在于会判断存储过程、函数是否已经授予了EXE或select权限给某个用户。这里主要用到了安全目录试图sys.database_permissions,例如,数据库里面有个存储过程dbo.sp_authorize_right,如果这个存储过程授权给Test用户了话,那么在目录试图sys.database_permissions里面会有一条记录,如下所示:
如果我将该存储过程授予exec权限给TEST1,那么
grant exec ON dbo.sp_diskcapacity_cal TO Test;
grant exec ON dbo.sp_diskcapacity_cal TO Test1;
select * FROM sys.sysusers WHERE name ='Test' OR name ='Test1'
阅读剩余部分
相关阅读 >>
字段值包含一批延续的字符串
详解sqlserver中的acid属性
sql server是什么,能干什么
springboot之使用springdatajpa的自定义sql方式
sql怎么删除某一行
sql语句练习实例之五 wms系统中的关于lifo或fifo的问题分析
mysql单表查询常见操作实例总结
sql server数据库备份方式有哪些
microsoft sql server是什么
简述mysql explain 命令
更多相关阅读请进入《sql》频道 >>

数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。
猜你喜欢
联络方式:
400-123-789
邮箱:xiachao@163.com
Q Q:12345678