it-swarm.it

Concedere le autorizzazioni per eseguire un processo del server SQL

Ho un lavoro sul mio server MSSQL 2005, che voglio consentire a qualsiasi utente del database di eseguire.

Non sono preoccupato per la sicurezza, poiché l'input per il lavoro effettivo del lavoro proviene da una tabella del database. Basta eseguire il lavoro, senza aggiungere record a quella tabella non farà nulla.

Non riesco proprio a trovare come concedere autorizzazioni pubbliche al lavoro.

C'è un modo per fare questo? L'unica cosa a cui riesco a pensare a questo punto è di avere il lavoro costantemente in esecuzione (o su una pianificazione), ma dal momento che deve solo fare qualsiasi lavoro reale raramente (forse una volta ogni pochi mesi) e voglio che il lavoro sia fatto non appena esiste, questa non sembra essere una soluzione ottimale.

22
Shahar Mosek

È possibile creare una procedura memorizzata che esegue il processo. Puoi usare with execute as owner per eseguire la procedura memorizzata come proprietario del database. In questo modo, gli stessi utenti non hanno bisogno di permessi su sp_start_job.

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

Concedi i diritti di esecuzione su DoYourJob per consentire alle persone di iniziare il lavoro.

Naturalmente, puoi anche inserire i contenuti del lavoro in una procedura e concedere i diritti per eseguirlo. Ciò consentirebbe una maggiore interazione, come la visualizzazione di un testo di risultato.

20
Andomar

Fondamentalmente, sono necessarie le autorizzazioni per sp_start_job (vedi la sezione autorizzazioni).

I ruoli sono descritti in " Ruoli database fissi agente SQL Server " (collegato dall'alto)

Modifica, gennaio 2012

Dopo il downvote anonimo 2 anni dopo ho risposto ...

Leggi la domanda Dice

Voglio consentire a qualsiasi utente del database di correre

poi

Non sono preoccupato per la sicurezza

e anche

Non riesco proprio a trovare come concedere autorizzazioni pubbliche al lavoro

Quindi i commenti di OP di seguito contraddicono la domanda

3
gbn

Ciò consentirà a un utente specifico (utente1) di eseguire qualsiasi processo Sql Agent.

I membri di SQLAgentUserRole e SQLAgentReaderRole possono avviare solo lavori di loro proprietà. I membri di SQLAgentOperatorRole possono avviare tutti i lavori locali, inclusi quelli di proprietà di altri utenti

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

1
drinky

Ho un'analoga necessità di concedere l'autorizzazione al mio operatore per eseguire manualmente le attività di SQL Server Agent. Ho seguito questo post Ruoli database fissi agente SQL Server per concedere il ruolo SQLAgentOperatorRole.

Spero che questo aiuto per risolvere il tuo caso.

0
Vu Doan