从文档中创建存储过程:
权限
需要数据库中的 CREATE PROCEDURE 权限和创建过程的模式的 ALTER 权限。
因此,仅仅给予CREATE PROCEDURE它自己不会让你创建一个程序。事实上,授予ROLE权限CREATE PROCEDURE,而不是ALTER架构将导致以下错误:
指定的模式名称“dbo”要么不存在,要么您没有使用它的权限。
ALTER PROCEDURE因此,没有权限让 a 的成员ROLE能够同时CREATE执行ALTERaPROCEDURE您需要执行的操作:
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权限。