Saya mengalami masalah dalam menjalankan suatu fungsi.
Inilah yang saya lakukan:
- Buat fungsi menggunakan SQL Server Management Studio. Itu berhasil dibuat.
- Saya kemudian mencoba menjalankan fungsi yang baru dibuat dan inilah yang saya dapatkan:
Izin EXECUTE ditolak pada objek 'xxxxxxx', basis data 'zzzzzzz', skema 'dbo'.
sql-server
upendra parmar
sumber
sumber
GO
danCreate
menjadiGOCreate
. Kesalahan sintaksis lain juga tampaknya memberikan kesalahan ini.Jawaban:
Kedengarannya seperti Anda perlu memberikan izin eksekusi kepada pengguna (atau grup yang menjadi bagiannya) untuk prosedur tersimpan yang dimaksud.
Misalnya, Anda dapat memberikan akses:
sumber
GRANT EXEC TO PUBLIC
untuk memberikan akses ke semua objek dalam basis dataSolusi terbaik yang saya temukan adalah membuat peran basis data baru yaitu
dan kemudian memberikan izin eksekutif peran itu.
Sekarang ketika Anda pergi ke properti pengguna dan pergi ke Pemetaan Pengguna dan pilih database tempat Anda telah menambahkan peran baru, sekarang peran baru akan terlihat di keanggotaan peran Database untuk: bagian
Untuk lebih detail baca artikel lengkap
sumber
EXEC sp_addrolemember @rolename = N'db_executor', @membername = N'processAPI'
Di Sql Server Management Studio:
pergilah ke
security->schema->dbo
.Klik dua kali dbo, lalu klik
permission tab->(blue font)view database permission
dan merasa bebas untuk menggulir ke bidang yang diperlukan seperti"execute".
Bantu sendiri untuk memilih menggunakangrant
ataudeny
kontrol. Semoga ini bisa membantu :)sumber
Anda perlu menjalankan sesuatu seperti ini
sumber
[domain\user]
daripada'domain\user'
Ini akan berfungsi jika Anda mencoba untuk memberikan izin kepada Pengguna atau peran.
Menggunakan Microsoft SQL Server Management Studio:
sumber
Memberi izin semacam itu bisa berbahaya, terutama jika aplikasi web Anda menggunakan nama pengguna yang sama.
Sekarang pengguna web (dan web seluruh dunia) juga memiliki izin untuk membuat dan menjatuhkan objek dalam basis data Anda. Pikirkan SQL Injection!
Saya merekomendasikan pemberian Execute privilege hanya untuk pengguna tertentu pada objek yang diberikan sebagai berikut:
Sekarang pengguna myusernameNoquotes dapat menjalankan prosedur yang tersimpanProcedureNameNoquotes tanpa izin lain yang tidak perlu ke data berharga Anda.
sumber
Anda tidak memiliki hak untuk mengeksekusinya, meskipun Anda memiliki cukup izin untuk membuatnya.
Untuk informasi lebih lanjut, lihat Izin Objek GRANT (Transact-SQL)
sumber
Jika Anda memiliki masalah seperti pertanyaan yang diajukan di atas mengenai pengecualian yang dilemparkan ketika solusi dieksekusi, masalahnya adalah izin, tidak diberikan dengan benar kepada pengguna grup itu untuk mengakses database / prosedur tersimpan. Yang perlu Anda lakukan adalah melakukan sesuatu seperti apa yang saya miliki di bawah ini, mengganti tambang dengan nama database Anda, prosedur (fungsi) yang tersimpan, dan jenis izin atau peran atau kepada siapa Anda memberikan akses.
/ ****** Objek: StoredProcedure [dbo]. [GetAllEmployees] Tanggal Skrip: 01/27/2016 16:27:27 ****** /
sumber
Anda dapat memberikan izin eksekusi kepada semua orang:
"Publik" adalah peran basis data default yang menjadi anggota semua pengguna.
sumber
Saya telah menghadapi masalah yang sama dan saya memecahkan juga memberikan izin db_owner kepada pengguna Database.
sumber
Jika Anda membuat pengguna ini terutama untuk database tertentu, maka mungkin Anda tidak menetapkannya sebagai db_owner di "pemetaan pengguna" properti.
sumber
Anda sebaiknya memodifikasi peran server, yang dirancang untuk hak keamanan. tambahkan peran server sysadmin ke pengguna Anda. untuk keamanan yang lebih baik Anda mungkin memiliki peran server khusus Anda. tetapi pendekatan ini akan memberi Anda apa yang Anda inginkan untuk saat ini.
Semoga berhasil
sumber
di sini adalah bagaimana memberikan izin kepada satu pengguna bukan publik,
Permintaan Langsung:
Use MyDatabase Grant execute on [dbo].[My-procedures-name] to [IIS APPPOOL\my-iis-pool] Go
sumber