Odpowiedzi:
SQL Server 2008 i nowsze:
/* CREATE A NEW ROLE */
CREATE ROLE db_executor
/* GRANT EXECUTE TO THE ROLE */
GRANT EXECUTE TO db_executor
Tylko dla użytkownika (nie roli):
USE [DBName]
GO
GRANT EXECUTE TO [user]
user
być może trzeba będzie znajdować się w nawiasach kwadratowych. Było to prawdą w moim przypadku użycia przynajmniej częściowo, ponieważ mój użytkownik miał dołączoną domenę (tj. Miał w niej znak \). edycja: naprawiono znak bez znaku ukośnika
SQL Server 2005 wprowadził możliwość nadawania uprawnień do wykonywania bazy danych na zasadzie bazy danych, tak jak opisano:
GRANT EXECUTE TO [MyDomain\MyUser]
Spowoduje to przyznanie uprawnień w zakresie bazy danych, co niejawnie obejmuje wszystkie procedury składowane we wszystkich schematach. Oznacza to, że nie musisz jawnie udzielać uprawnień na procedurę składowaną.
Możesz również ograniczyć, przyznając uprawnienia do wykonywania schematu, jeśli chcesz być bardziej szczegółowy:
GRANT EXECUTE ON SCHEMA ::dbo TO [MyDomain\MyUser]
Oprócz powyższych odpowiedzi chciałbym dodać:
Zamiast tego możesz przyznać tę rolę roli , a następnie przypisać tę rolę użytkownikom. Załóżmy, że utworzyłeś rolę myAppRights
za pośrednictwem
CREATE ROLE [myAppRights]
wtedy możesz nadać prawa wykonywania za pośrednictwem
GRANT EXECUTE TO [myAppRights]
do tej roli.
Lub, jeśli chcesz to zrobić na poziomie schematu:
GRANT EXECUTE ON SCHEMA ::dbo TO [myAppRights]
również działa (w tym przykładzie rola myAppRights
będzie miała dbo
później uprawnienia do wykonywania wszystkich elementów schematu ).
W ten sposób wystarczy to zrobić tylko raz i można łatwo przypisać / cofnąć wszystkie powiązane prawa aplikacji użytkownikowi / użytkownikowi, jeśli zajdzie potrzeba późniejszej zmiany - jest to szczególnie przydatne, jeśli chcesz utworzyć bardziej złożone profile dostępu.
Uwaga: jeśli nadasz rolę schematowi, wpłynie to również na elementy, które utworzysz później - może to być korzystne lub nie, w zależności od zamierzonego projektu, więc miej to na uwadze.
GRANT EXECUTE TO [ROLE]
Ten na pewno pomoże