it-swarm-eu.dev

Udělte oprávnění ke spuštění úlohy serveru SQL

Mám na svém serveru MSSQL 2005 práci, kterou chci povolit spuštění kteréhokoli uživatele databáze.

Nemám obavy o bezpečnost, protože vstup do skutečné práce úlohy pochází z databázové tabulky. Pouhé spuštění úlohy bez přidání záznamů do této tabulky nic nedělá.

Nemohu jen najít, jak udělit veřejné oprávnění k této úloze.

Existuje nějaký způsob, jak to udělat? Jediné, na co v tomto bodě mohu myslet, je mít práci neustále v chodu (nebo podle plánu), ale protože potřebuje nějakou skutečnou práci jen zřídka (možná jednou za několik měsíců) a já chci, aby byla tato práce jakmile existuje, nezdá se, že by to bylo optimální řešení.

22
Shahar Mosek

Mohli byste vytvořit uloženou proceduru, která úlohu spustí. Můžeš použít with execute as owner pro spuštění uložené procedury jako vlastníka databáze. Tímto způsobem sami uživatelé nepotřebují povolení k sp_start_job.

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

Udělte vykonávací práva na DoYourJob, aby lidé mohli zahájit úlohu.

Samozřejmě můžete také vložit obsah úkolu do postupu a udělit mu práva ke spuštění. To by umožnilo více interakce, například zobrazení výsledného textu.

20
Andomar

V zásadě jsou oprávnění sp_start_job (viz sekce oprávnění).

Role jsou popsány v " SQL Server Agent Fixed Database Roles " (propojené shora)

Upravit, leden 2012

Po anonymním downvote 2 roky poté, co jsem odpověděl ...

Přečtěte si otázku. Říká

Chci povolit spuštění libovolného uživatele databáze

pak

Nebojím se o bezpečnost

a také

Nemohu jen najít, jak udělit veřejné oprávnění k této úloze

Takže komentáře OP níže jsou v rozporu s otázkou

3
gbn

To umožní konkrétnímu uživateli (user1) spustit jakoukoli úlohu agenta Sql.

Členové SQLAgentUserRole a SQLAgentReaderRole mohou spouštět pouze úlohy, které vlastní. Členové SQLAgentOperatorRole mohou spouštět všechny místní úlohy, včetně těch, které vlastní jiní uživatelé

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

1
drinky

Mám podobnou potřebu udělit svému operátorovi oprávnění k ručnímu provádění úloh agenta serveru SQL. Sledoval jsem tento příspěvek SQL Server Agent Fixed Database Roles , abych udělil roli SQLAgentOperatorRole.

Doufám, že to pomůže vyřešit váš případ.

0
Vu Doan