SQL server işi çalıştırmak için izin verin


22

MSSQL sunucum 2005'te herhangi bir veritabanı kullanıcısının çalışmasına izin vermek istediğim bir işim var.

İşin asıl işinin girişi bir veritabanı tablosundan geldiği için güvenlik konusunda endişelenmiyorum. Sadece işi çalıştırmak, o tabloya kayıt eklemeden hiçbir şey yapmaz.

Sadece işe nasıl izin verildiğini bulamıyorum.

Bunu yapmanın bir yolu var mı? Bu noktada düşünebildiğim tek şey işin sürekli çalışmasını sağlamak (ya da zamanlamaya göre), ancak nadiren herhangi bir gerçek işi yapması gerektiğinden (belki birkaç ayda bir) ve çalışmanın olmasını istiyorum. var olduğu anda yapılır, bu optimal bir çözüm gibi görünmemektedir.

Yanıtlar:


20

İşi çalıştıran saklı bir prosedür oluşturabilirsiniz. with execute as ownerSaklı yordamı veritabanı sahibi olarak çalıştırmak için kullanabilirsiniz . Bu şekilde, kullanıcıların kendileri üzerinde izinlere ihtiyaç duymazlar sp_start_job.

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

DoYourJobİnsanların işe başlamalarına izin vermek için haklarını verme hakları verin.

Tabii ki, işin içeriğini bir prosedüre koyabilir ve bunu yürütmek için haklar verebilirsiniz. Bu, sonuç metnini görüntülemek gibi daha fazla etkileşime izin verir.


Bu işe yaramıyor. Ayrıcalıklı olmayan kullanıcı işlemi çalıştırabilir, ancak işlem yürütme iznine sahip olmadığı için işlem sp_start_job işlevini çalıştıramaz. İçeriğin bir prosedürde olmasını istemiyorum çünkü arayanın işin bitmesini beklemesini istemiyorum.

@ shaharmo: Saklı yordamın veritabanı sahibi olarak çalıştırılmasını sağlayabilirsiniz, cevabımı düzenleyeceğim
Andomar

Hala çalışmıyor. Aynı hatayı alıyorum. DoYourJob'u msdb veritabanında ve veritabanımda aynı sonuçlarla oluşturmaya çalıştım.

1
@shaharmo: Garip, veritabanı sahibinin kim olduğunu merak ediyorum? Ayrıca kullanabilirsiniz with execute as 'loginname', bu işe yarıyor mu?
Andomar

3

Temel olarak, izinlere ihtiyaç vardır sp_start_job(izinler bölümüne bakın).

Rolleri "olarak açıklanmıştır SQL Server Agent Sabit veritabanı rolleri " (yukarıdan bağlantılı)

Düzenle, Ocak 2012

Cevap verdikten 2 yıl sonra isimsiz oy kullandıktan sonra ...

Soruyu okuyun. Diyor ki

Herhangi bir veritabanı kullanıcısının çalışmasına izin vermek istiyorum

sonra

Güvenlik konusunda endişelenmiyorum

ve ayrıca

İşe genel izinlerin nasıl verileceğini bulamıyorum

Öyleyse OP'nin aşağıdaki yorumları soru ile çelişiyor


1
Bu, tüm kullanıcıların tüm işleri yürütmesine izin vermez mi? Sadece belirli bir işi yürütme iznine sahip olmalarını istiyorum.

1
Hangisinde istediğin ... "işe kamu izinleri
ver

1

Bu, belirli bir kullanıcının (user1) herhangi bir Sql Agent işini çalıştırmasını sağlar.

SQLAgentUserRole ve SQLAgentReaderRole üyeleri yalnızca sahip oldukları işleri başlatabilir. SQLAgentOperatorRole üyeleri, diğer kullanıcılara ait olanlar dahil tüm yerel işleri başlatabilir

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


0

Operatörümün SQL Server Agent görevlerini manuel olarak yürütmesi için izin vermeye benzer bir ihtiyacım var. SQLAgentOperatorRole rolünü vermek için SQL Server Agent Sabit Veritabanı Rollerini takip ettim .

Bu davanızı çözmek için bu yardımı umuyorum.


Yaptıklarının ayrıntılarına girebilir misin? Link sadece cevaplar "kaşlarını çattı" - link rot & c.
Vérace
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.