it-swarm.asia

Berikan izin untuk menjalankan pekerjaan server SQL

Saya memiliki pekerjaan di server MSSQL saya 2005, bahwa saya ingin mengizinkan pengguna basis data untuk menjalankan.

Saya tidak khawatir tentang keamanan, karena input ke pekerjaan sebenarnya berasal dari tabel database. Hanya menjalankan pekerjaan, tanpa menambahkan catatan ke tabel itu tidak akan menghasilkan apa-apa.

Saya tidak bisa menemukan cara untuk memberikan izin publik untuk pekerjaan itu.

Apakah ada cara untuk melakukan ini? Satu-satunya hal yang dapat saya pikirkan pada saat ini adalah memiliki pekerjaan terus berjalan (atau sesuai jadwal), tetapi karena itu hanya perlu melakukan pekerjaan yang sebenarnya jarang (mungkin sekali setiap beberapa bulan) dan saya ingin pekerjaan menjadi dilakukan segera setelah ada, sepertinya ini bukan solusi yang optimal.

22
Shahar Mosek

Anda dapat membuat prosedur tersimpan yang menjalankan pekerjaan. Kamu bisa menggunakan with execute as owner untuk menjalankan prosedur tersimpan sebagai pemilik basis data. Dengan begitu, para pengguna itu sendiri tidak memerlukan permissons di sp_start_job.

create procedure dbo.DoYourJob
with execute as owner
as
exec sp_start_job @job_name = 'YourJob'

Berikan hak eksekusi pada DoYourJob untuk memungkinkan orang memulai pekerjaan.

Tentu saja, Anda juga dapat meletakkan konten pekerjaan dalam suatu prosedur, dan memberikan hak untuk menjalankannya. Itu akan memungkinkan lebih banyak interaksi, seperti menampilkan teks hasil.

20
Andomar

Pada dasarnya, izin diperlukan pada sp_start_job (lihat bagian izin).

Peran dijelaskan dalam " Peran Database Tetap Agen SQL Server " (ditautkan dari atas)

Edit, Jan 2012

Setelah downvote anonim 2 tahun setelah saya menjawab ...

Baca pertanyaannya. Ia mengatakan

Saya ingin mengizinkan pengguna basis data untuk berjalan

kemudian

Saya tidak khawatir tentang keamanan

dan juga

Saya tidak bisa menemukan cara untuk memberikan izin publik untuk pekerjaan itu

Jadi komentar OP di bawah ini bertentangan dengan pertanyaan tersebut

3
gbn

Ini akan memungkinkan pengguna tertentu (user1) untuk menjalankan pekerjaan Agen Sql.

Anggota SQLAgentUserRole dan SQLAgentReaderRole hanya dapat memulai pekerjaan yang mereka miliki. Anggota SQLAgentOperatorRole dapat memulai semua pekerjaan lokal termasuk yang dimiliki oleh pengguna lain

USE [msdb] GO CREATE USER [user1] FOR LOGIN [user1] GO USE [msdb] GO ALTER ROLE [SQLAgentOperatorRole] ADD MEMBER [user1] GO

1
drinky

Saya memiliki kebutuhan serupa untuk memberikan izin kepada operator saya untuk secara manual menjalankan tugas-tugas Agen SQL Server. Saya mengikuti posting ini SQL Server Agent Memperbaiki Basis Data untuk memberikan peran SQLAgentOperatorRole.

Semoga bantuan ini bisa menyelesaikan kasus Anda.

0
Vu Doan