Aşağıdaki komut, kullanıcıya "MyUser" veritabanındaki TÜM saklı yordamları yürütme izni veriyor mu?
GRANT EXECUTE TO [MyDomain\MyUser]
Yanıtlar:
SQL Server 2008 ve Üstü:
/* CREATE A NEW ROLE */
CREATE ROLE db_executor
/* GRANT EXECUTE TO THE ROLE */
GRANT EXECUTE TO db_executor
Yalnızca bir kullanıcı için (bir rol değil):
USE [DBName]
GO
GRANT EXECUTE TO [user]
user
Köşeli parantez içinde olmanız gerekebileceğini belirtmekte fayda var. Bu benim kullanım durumumda en azından kısmen, kullanıcımın ekli bir etki alanına sahip olması nedeniyle doğruydu (yani, içinde bir \ karakteri vardı). düzenleme: çıkış karaktersiz eğik çizgi karakteri düzeltildi
SQL Server 2005 , açıkladığınız gibi, bir veritabanı ilkesine veritabanı yürütme izinleri verme yeteneği getirdi :
GRANT EXECUTE TO [MyDomain\MyUser]
Bu, tüm şemalardaki tüm saklı yordamları örtük olarak içeren veritabanı kapsamında izin verecektir. Bu, depolanan yordam başına açıkça izin vermeniz gerekmediği anlamına gelir.
Daha ayrıntılı olmak istiyorsanız, şema yürütme izinleri vererek de kısıtlayabilirsiniz :
GRANT EXECUTE ON SCHEMA ::dbo TO [MyDomain\MyUser]
Yukarıdaki cevaplara ek olarak şunu eklemek istiyorum:
Bunun yerine bunu bir role atamak ve ardından rolü kullanıcılara / kullanıcılara atamak isteyebilirsiniz. myAppRights
Üzerinden bir rol oluşturduğunuzu varsayalım
CREATE ROLE [myAppRights]
daha sonra aracılığıyla yürütme hakları verebilirsiniz
GRANT EXECUTE TO [myAppRights]
bu role.
Veya şema düzeyinde yapmak istiyorsanız :
GRANT EXECUTE ON SCHEMA ::dbo TO [myAppRights]
ayrıca çalışır (bu örnekte, rol myAppRights
daha dbo
sonra şemanın tüm öğeleri üzerinde yürütme haklarına sahip olacaktır ).
Bu şekilde, bunu yalnızca bir kez yapmanız gerekir ve ilgili tüm uygulama haklarını daha sonra değiştirmeniz gerekirse bir kullanıcıya kolayca atayabilir / iptal edebilirsiniz - özellikle daha karmaşık erişim profilleri oluşturmak istiyorsanız yararlıdır.
Not: Bir şemaya bir rol verirseniz, bu daha sonra oluşturacağınız öğeleri de etkiler - bu, amaçladığınız tasarıma bağlı olarak yararlı olabilir veya olmayabilir, bu nedenle bunu aklınızda bulundurun.
[ROLE] İÇİN UYGULAMA VERİN
Bu kesinlikle yardımcı olur