Jawaban:
SQL Server 2008 dan di atas:
/* CREATE A NEW ROLE */
CREATE ROLE db_executor
/* GRANT EXECUTE TO THE ROLE */
GRANT EXECUTE TO db_executor
Untuk hanya pengguna (bukan peran):
USE [DBName]
GO
GRANT EXECUTE TO [user]
user
mungkin harus berada dalam kurung kotak. Ini benar dalam kasus penggunaan saya setidaknya sebagian karena pengguna saya memiliki domain terlampir (mis. Ia memiliki \ karakter di dalamnya). sunting: memperbaiki karakter slash unescaped
SQL Server 2005 memperkenalkan kemampuan untuk memberikan izin eksekusi database ke prinsip database, seperti yang telah Anda jelaskan:
GRANT EXECUTE TO [MyDomain\MyUser]
Itu akan memberikan izin pada lingkup basis data, yang secara implisit mencakup semua prosedur tersimpan di semua skema. Ini berarti Anda tidak perlu secara eksplisit memberikan izin per prosedur tersimpan.
Anda juga dapat membatasi dengan memberikan skema mengeksekusi izin jika Anda ingin lebih terperinci:
GRANT EXECUTE ON SCHEMA ::dbo TO [MyDomain\MyUser]
Selain jawaban di atas, saya ingin menambahkan:
Anda mungkin ingin memberikan ini kepada peran sebagai gantinya, dan kemudian menetapkan peran tersebut kepada pengguna. Misalkan Anda telah membuat peran myAppRights
via
CREATE ROLE [myAppRights]
maka Anda dapat memberikan hak eksekusi melalui
GRANT EXECUTE TO [myAppRights]
untuk peran itu.
Atau, jika Anda ingin melakukannya di tingkat skema:
GRANT EXECUTE ON SCHEMA ::dbo TO [myAppRights]
juga berfungsi (dalam contoh ini, peran myAppRights
akan memiliki hak mengeksekusi pada semua elemen skema dbo
setelahnya).
Dengan cara ini, Anda hanya perlu melakukannya sekali dan dapat menetapkan / mencabut semua hak aplikasi terkait dengan mudah ke / dari pengguna jika Anda perlu mengubahnya nanti - terutama berguna jika Anda ingin membuat profil akses yang lebih kompleks.
Catatan: Jika Anda memberikan peran pada skema, itu memengaruhi juga elemen yang akan Anda buat nanti - ini mungkin bermanfaat atau tidak tergantung pada desain yang Anda maksudkan, jadi ingatlah itu.
GRANT EXECUTE TO [ROLE]
Yang ini pasti membantu