Відповіді:
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
після цього).
Таким чином, вам доведеться це зробити лише один раз, і ви можете легко призначити / відкликати всі пов'язані права на додаток з користувачем / від користувача, якщо вам потрібно змінити це згодом - особливо корисно, якщо ви хочете створити більш складні профілі доступу.
Примітка. Якщо ви надаєте роль схемі, яка впливає також на елементи, які ви створили пізніше - це може бути корисним або не залежно від дизайну, який ви задумали, тому пам’ятайте про це.
ВИКОНУЙТЕ ВИСТАВКУ [ROLE]
Цей, безумовно, допоможе