Mam zadanie na moim serwerze MSSQL 2005, że chcę pozwolić każdemu użytkownikowi bazy danych na uruchomienie.
Nie martwię się o bezpieczeństwo, ponieważ dane wejściowe do rzeczywistej pracy zadania pochodzą z tabeli bazy danych. Samo uruchomienie zadania bez dodania rekordów do tej tabeli nic nie da.
Po prostu nie mogę znaleźć sposobu na przyznanie publicznych uprawnień do pracy.
Czy jest na to jakiś sposób? Jedyną rzeczą, o której mogę teraz myśleć, jest ciągłe wykonywanie pracy (lub zgodnie z harmonogramem), ale ponieważ musi ona wykonywać jakąkolwiek rzeczywistą pracę rzadko (może raz na kilka miesięcy) i chcę, aby była ona wykonywana wykonane tak szybko, jak to możliwe, nie wydaje się to optymalnym rozwiązaniem.
źródło
with execute as 'loginname'
, czy to działa?Zasadniczo potrzebne są uprawnienia
sp_start_job
(patrz sekcja uprawnień).Role opisano w sekcji „ Role bazy danych agenta programu SQL Server ” (połączone z góry)
Edytuj, styczeń 2012 r
Po anonimowym głosowaniu 2 lata po tym, jak odpowiedziałem ...
Przeczytaj pytanie To mówi
następnie
i również
Poniższe komentarze OP są zatem sprzeczne z tym pytaniem
źródło
Umożliwi to określonemu użytkownikowi (użytkownikowi 1) uruchomienie dowolnego zadania agenta Sql.
Członkowie SQLAgentUserRole i SQLAgentReaderRole mogą uruchamiać tylko zadania, których są właścicielami. Członkowie SQLAgentOperatorRole mogą uruchamiać wszystkie zadania lokalne, w tym te, które są własnością innych użytkowników
USE [msdb] GO CREATE USER [user1] FOR LOGIN [user1] GO USE [msdb] GO ALTER ROLE [SQLAgentOperatorRole] ADD MEMBER [user1] GO
źródło
Mam podobną potrzebę udzielenia pozwolenia mojemu operatorowi na ręczne wykonywanie zadań agenta SQL Server. Śledziłem ten wpis SQL Server Agent Naprawiono role bazy danych, aby nadać rolę SQLAgentOperatorRole.
Mam nadzieję, że pomoże to rozwiązać Twój przypadek.
źródło