批量賦予用戶所有存儲過程或函數的執行權限


--*********************查詢數據庫所有對象**********************************

--存儲過程
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