批量赋予用户所有存储过程或函数的执行权限

--*********************查询数据库所有对象**********************************

--存储过程
select * from sysobjects where xtype='P' --表值函数  xtype='IF',标量值函数  xtype='FN',聚合函数 xtype='AF'

--*********************批量生成权限操作SQL**********************************

--存储过程
select 'GRANT EXEC ON dbo.['+name+'] TO 数据库用户名;' from sysobjects where xtype='P'
--表值函数
--select 'GRANT EXEC ON dbo.['+name+'] TO 数据库用户名;' from sysobjects where xtype IN('IF','TF') --表值函数不需要单独赋予权限
--标量值函数
select 'GRANT EXEC ON dbo.['+name+'] TO 数据库用户名;' from sysobjects where xtype='FN'
--聚合函数
select 'GRANT EXEC ON dbo.['+name+'] TO 数据库用户名;' from sysobjects where xtype='AF'


--*********************查询拥有对象具体操作权限**********************************

--查询用户是否拥有存储过程(proc_AddQrcode)权限
SELECT * FROM sys.database_permissions WHERE major_id=OBJECT_ID('dbo.proc_AddQrcode')

 

--*********************赋予用户对象操作权限**********************************

--赋予存储过程(proc_AddQrcode)执行权限 给用户lyx
GRANT EXECUTE ON dbo.proc_AddQrcode TO lyx;

--赋予标量值函数(f_AddDateByType)执行权限 给用户lyx
GRANT EXECUTE ON dbo.f_AddDateByType TO lyx;

其他权限:

INSERT
DELETE
UPDATE
SELECT
CONNECT
EXECUTE
REFERENCES
TAKE OWNERSHIP
VIEW DEFINITION
ALTER


--*******************************************************

SELECT OBJECT_ID(name),name from sysobjects where xtype='FN' AND OBJECT_ID(name)=855415857
--SELECT OBJECT_ID('pro_DeleteAndCopyHsCase')

SELECT major_id,TB.name,COUNT(DISTINCT TA.type)
FROM sys.database_permissions TA
LEFT JOIN sysobjects TB ON TA.major_id=OBJECT_ID(TB.name)
WHERE TB.xtype='P' --'FN'
GROUP BY major_id,TB.name
HAVING COUNT(DISTINCT TA.type)>1


SELECT * FROM sys.database_permissions WHERE major_id=855415857

 

转载于:https://www.cnblogs.com/My-Dream/p/11189699.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值