Ответы:
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]
user
возможно, должны быть в квадратных скобках. Это было верно в моем случае использования, по крайней мере частично, потому что у моего пользователя был присоединен домен (т. Е. В нем был символ \). редактирование: исправлена
В SQL Server 2005 появилась возможность предоставлять разрешения на выполнение базы данных принципу базы данных, как вы описали:
GRANT EXECUTE TO [MyDomain\MyUser]
Это даст разрешение на область базы данных, которая неявно включает все хранимые процедуры во всех схемах. Это означает, что вам не нужно явно предоставлять разрешения для хранимой процедуры.
Вы также можете ограничить, предоставив разрешения на выполнение схемы, если вы хотите быть более детальным:
GRANT EXECUTE ON SCHEMA ::dbo TO [MyDomain\MyUser]
В дополнение к ответам выше, я хотел бы добавить:
Возможно, вы захотите предоставить это роли , а затем назначить роль пользователю (-ям). Предположим, вы создали роль myAppRights
через
CREATE ROLE [myAppRights]
тогда вы можете дать права на выполнение через
GRANT EXECUTE TO [myAppRights]
на эту роль.
Или, если вы хотите сделать это на уровне схемы:
GRANT EXECUTE ON SCHEMA ::dbo TO [myAppRights]
также работает (в этом примере роль myAppRights
будет иметь права на выполнение всех элементов схемы dbo
впоследствии).
Таким образом, вам нужно сделать это только один раз, и вы можете легко назначить / отозвать все связанные права приложения для пользователя или от пользователя, если вам потребуется изменить это позже - особенно полезно, если вы хотите создать более сложные профили доступа.
Примечание. Если вы предоставляете роль схеме, которая также влияет на элементы, которые вы создадите позже - это может быть полезно или не зависеть от предполагаемого дизайна, так что имейте это в виду.
ПРЕДОСТАВИТЬ ВЫПОЛНИТЬ [РОЛЬ]
Этот наверняка поможет