Из документации Создание хранимой процедуры :
Разрешения
Требуется разрешение CREATE PROCEDURE в базе данных и разрешение ALTER для схемы, в которой процедура создается.
Поэтому, если просто указать CREATE PROCEDURE
, вы не сможете создать процедуру. Фактически, предоставление ROLE
разрешения CREATE PROCEDURE
, а не ALTER
в схеме приведет к следующей ошибке:
Указанное имя схемы "dbo" либо не существует, либо у вас нет разрешения на его использование.
Нет разрешений ALTER PROCEDURE
, поэтому член ROLE
может иметь как CREATE
, так и ALTER
a *. 1025 * вам нужно будет сделать:
GRANT CREATE PROCEDURE TO YourRole;
GRANT ALTER ON SCHEMA::dbo TO YourRole; --Replace with appropriate schema name
Это, однако, также позволит пользователю ALTER
любые процедуры в указанной схеме. Кроме того, включите тех, кто в этой роли, ALTER
для других объектов схемы (например, таблиц).
Если ваш ROLE
имеет разрешения на ALTER
процедур, и вы хотите удалить это вам нужно будет выполнить следующее:
REVOKE ALTER ON SCHEMA::dbo TO YourRole;
Это, как упоминалось, также отменит их способность ALTER
любых других объектов в указанной схеме.
Помните, REVOKE
не DENY
, это просто означает, что USER
больше не унаследует это разрешение от этого ROLE
. Если USER
имеет разрешение от другого ROLE
или у них есть разрешение, они смогут продолжать использовать разрешение. Если вы должны остановить USER
от выполнения действия, независимо от каких-либо других разрешений, они должны иметь разрешение DENY
.