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


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

--存储过程
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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM