Masalah izin akses basis data (sql server 2008)

Saya telah membuat aplikasi C# yang membaca file konfigurasi, mendapatkan string koneksi, dan untuk setiap string koneksi ia membaca daftar proc yang disimpan untuk beberapa pemrosesan lebih lanjut. Sekarang, saya menghadapi beberapa masalah izin. Saat mengembangkan aplikasi saya menggunakan string koneksi dengan pengguna tingkat dbo. String koneksi kehidupan nyata ditujukan untuk pengguna sql dengan hanya izin pembaca data dan penulis data, tetapi ketika saya menjalankannya

select user_name(uid) as owner, name from dbo.sysobjects where type='P' order by name asc

untuk mendapatkan daftar procs menggunakan pengguna seperti itu, kueri tidak mengembalikan catatan (meskipun ia mengembalikan procs jika saya mengeksekusi sebagai dbo)

Saya tidak ingin memberikan izin tambahan kepada pengguna dalam string koneksi untuk alasan keamanan, jadi pertanyaan saya adalah - bagaimana pengguna yang hanya memiliki izin pembaca data/penulis data mendapatkan daftar proses yang disimpan, atau jika tidak memungkinkan, berapa minimalnya? izin yang harus dimiliki pengguna untuk memiliki akses ke info itu?

Saya menggunakan SQL Server 2008


person Andrey    schedule 05.02.2010    source sumber
comment
sebagai tambahan: pada SQL Server 2005 dan yang lebih baru, saya akan menggunakan sys.procedures daripada sysobjects yang tidak digunakan lagi. Lihat dokumen MSDN di sysobjects di sini: msdn.microsoft.com/en-us/ perpustakaan/ms177596.aspx   -  person marc_s    schedule 06.02.2010


Jawaban (3)


Saya akan membuat prosedur tersimpan yang dilampirkan ke kredensial yang dimiliki oleh aplikasi saya yang akan mengambil parameter Pengguna dan menanyakan objek sys untuk mengembalikan proses yang tersedia. Eksekusi selanjutnya dari proses tersebut dapat dilakukan oleh string koneksi spesifik yang Anda sebutkan.

person Jacob G    schedule 05.02.2010

gunakan skrip ini:

select user_name(schema_id) as owner, name from sys.procedures
person masoud ramezani    schedule 07.02.2010

Sebenarnya saya sudah menemukan jawabannya - pengguna harus diberikan izin untuk setiap proses tersimpan yang ingin kami daftarkan

person Andrey    schedule 09.02.2010