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

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

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

--*********************查询数据库所有对象********************************** --存储过程 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
经验分享 程序员 微信小程序 职场和发展