Предоставляет ли следующая команда пользователю «MyUser» разрешение на выполнение ВСЕХ хранимых процедур в базе данных?GRANT EXECUTE для всех хранимых процедур
GRANT EXECUTE TO [MyDomain\MyUser]
Предоставляет ли следующая команда пользователю «MyUser» разрешение на выполнение ВСЕХ хранимых процедур в базе данных?GRANT EXECUTE для всех хранимых процедур
GRANT EXECUTE TO [MyDomain\MyUser]
SQL Server 2008 и выше:
/* CREATE A NEW ROLE */
CREATE ROLE db_executor
/* GRANT EXECUTE TO THE ROLE */
GRANT EXECUTE TO db_executor
Для только пользователь (не роли):
USE [DBName]
GO
GRANT EXECUTE TO [user]
SQL Server 2005 появилась возможность grant database execute permissions принципу базы данных, как вы описали:
GRANT EXECUTE TO [MyDomain\MyUser]
Это предоставит разрешение в области базы данных, которое неявно включает в себя все хранимые процедуры во всех схемах. Это означает, что вам не нужно явно предоставлять разрешения на хранимую процедуру.
Вы также можете ограничить с помощью granting schema execute permissions, если вы хотите быть более зернистая:
GRANT EXECUTE ON SCHEMA ::dbo TO [MyDomain\MyUser]
Отлично, чтобы иметь возможность сделать это по определенной схеме , поэтому избегая разрешений на sys – RemarkLima
В дополнение к указанным выше ответам, я хотел бы добавить:
Вы можете предоставить это a роль, а затем назначьте роль пользователю (пользователям).
CREATE ROLE [myAppRights]
GRANT EXECUTE TO [myAppRights]
делает это.
Если вы хотите сделать это на уровне схемы:
GRANT EXECUTE ON SCHEMA ::dbo TO [myAppRights]
также работает (в этом примере роль myAppRights
будет исполнять права на все элементы схемы dbo
впоследствии).
Таким образом, вы должны сделать это один раз и можете легко назначить/отменить все связанные права приложения для пользователя/пользователя, если вам нужно изменить его позже - особенно полезно, если вы хотите создать более сложные профили доступа.
+1 plus: он даже предоставляет разрешения EXECUTE для будущих хранимых процедур, например. те, которых еще нет в вашей базе данных, но будут созданы позже. –
Я думаю, что стоит отметить, что ваш «пользователь» может оказаться в квадратных скобках. Это было верно в моем случае использования, по крайней мере частично, потому что у моего пользователя был присоединенный домен (т. Е. В нем был символ \). Редактировать: fixed unescaped slash character – PrinceTyke
Почему бы не назначить пользователя роли db_ddladmin? «Члены фиксированной роли базы данных db_ddladmin могут запускать любую команду Data Definition Language (DDL) в базе данных». - см. [здесь] (https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/database-level-roles) –