sqlSQL数据库怎么批量为存储过程函数授权呢?

2023-01-07 16:27:34 作者:admin

本文整理自网络,侵删。

在工作当中遇到一个类似这样的问题:要对数据库账户的权限进行清理、设置,其中有一个用户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版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



在线咨询 拨打电话