Ich habe auf meinem MSSQL Server 2005 einen Auftrag, den ich jedem Datenbankbenutzer erlauben möchte, ausgeführt zu werden.
Ich mache mir keine Sorgen um die Sicherheit, da die Eingabe für die eigentliche Arbeit des Jobs aus einer Datenbanktabelle stammt. Das Ausführen des Jobs ohne Hinzufügen von Datensätzen zu dieser Tabelle führt zu nichts.
Ich kann einfach nicht finden, wie ich dem Job öffentliche Berechtigungen erteilen kann.
Gibt es eine Möglichkeit, dies zu tun? Das Einzige, woran ich zu diesem Zeitpunkt denken kann, ist, dass der Job ständig ausgeführt wird (oder nach einem Zeitplan), aber da er nur selten (möglicherweise alle paar Monate) tatsächlich ausgeführt werden muss, möchte ich, dass die Arbeit ausgeführt wird sobald es existiert, scheint dies keine optimale Lösung zu sein.
quelle
with execute as 'loginname'
, funktioniert das?Grundsätzlich sind Berechtigungen erforderlich für
sp_start_job
(siehe Abschnitt Berechtigungen).Die Rollen werden unter " Feste SQL Server Agent-Datenbankrollen " (von oben verlinkt) beschrieben.
Bearbeiten, Januar 2012
Nach der anonymen Ablehnung 2 Jahre nachdem ich geantwortet habe ...
Lies die Frage. Es sagt
dann
und auch
Daher widersprechen die folgenden Kommentare von OP der Frage
quelle
Dadurch kann ein bestimmter Benutzer (Benutzer1) einen beliebigen SQL Agent-Job ausführen.
Mitglieder von SQLAgentUserRole und SQLAgentReaderRole können nur Aufträge starten, deren Eigentümer sie sind. Mitglieder von SQLAgentOperatorRole können alle lokalen Jobs starten, einschließlich der Jobs, deren Eigentümer andere Benutzer sind
USE [msdb] GO CREATE USER [user1] FOR LOGIN [user1] GO USE [msdb] GO ALTER ROLE [SQLAgentOperatorRole] ADD MEMBER [user1] GO
quelle
Ich muss meinem Operator auch die Berechtigung erteilen, SQL Server-Agent-Aufgaben manuell auszuführen. Ich folgte diesem Beitrag SQL Server Agent Fixed Database Roles , um die Rolle SQLAgentOperatorRole zu erteilen.
Hoffen Sie, dass diese Hilfe Ihren Fall löst.
quelle