从文档中创建存储过程:
权限
需要数据库中的 CREATE PROCEDURE 权限和创建过程的模式的 ALTER 权限。
因此,仅仅给予CREATE PROCEDURE
它自己不会让你创建一个程序。事实上,授予ROLE
权限CREATE PROCEDURE
,而不是ALTER
架构将导致以下错误:
指定的模式名称“dbo”要么不存在,要么您没有使用它的权限。
ALTER PROCEDURE
因此,没有权限让 a 的成员ROLE
能够同时CREATE
执行ALTER
aPROCEDURE
您需要执行的操作:
GRANT CREATE PROCEDURE TO YourRole;
GRANT ALTER ON SCHEMA::dbo TO YourRole; --Replace with appropriate schema name
然而,这也将使用户能够ALTER
对所述模式进行任何程序。不过,Ut 还允许角色中的ALTER
其他对象也可以访问模式上的其他对象(例如表)。
如果您对程序ROLE
有权限ALTER
并且想要删除它,则需要运行以下命令:
REVOKE ALTER ON SCHEMA::dbo TO YourRole;
如前所述,这也将撤销它们ALTER
对所述模式上的任何其他对象的能力。
请记住,REVOKE
不DENY
,它只是意味着USER
不会再从那里继承该权限ROLE
。如果USER
拥有其他人的权限ROLE
,或者他们自己拥有权限,他们将能够继续使用该权限。如果您必须停止USER
执行某项操作,无论是否有任何其他权限,他们都必须拥有该DENY
权限。