Предоставляет ли следующая команда пользователю "MyUser" разрешение на выполнение ВСЕХ хранимых процедур в базе данных?
GRANT EXECUTE TO [MyDomain\MyUser]
Предоставляет ли следующая команда пользователю "MyUser" разрешение на выполнение ВСЕХ хранимых процедур в базе данных?
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 EXECUTE TO [MyDomain\MyUser]
Это предоставит разрешение в области базы данных, которое неявно включает в себя все хранимые процедуры во всех схемах. Это означает, что вам не нужно явно предоставлять разрешения для каждой хранимой процедуры.
Вы также можете ограничить предоставление разрешений на выполнение схемы, если вы хотите быть более подробными:
GRANT EXECUTE ON SCHEMA ::dbo TO [MyDomain\MyUser]
В дополнение к приведенным выше ответам я хотел бы добавить:
Вместо этого вы можете присвоить это роли , а затем назначьте роль пользователю (пользователям).
CREATE ROLE [myAppRights]
GRANT EXECUTE TO [myAppRights]
делает это.
Если вы хотите сделать это на уровне схемы:
GRANT EXECUTE ON SCHEMA ::dbo TO [myAppRights]
также работает (в этом примере роль myAppRights
будет иметь права выполнения для всех элементов схемы dbo
).
Таким образом, вы должны сделать это только один раз и можете легко назначать/отзывать все связанные права приложения для пользователя/пользователя, если вам нужно изменить это позже - особенно полезно, если вы хотите создать более сложные профили доступа.