J'ai un travail sur mon serveur MSSQL 2005, que je veux autoriser n'importe quel utilisateur de base de données à exécuter.
Je ne m'inquiète pas de la sécurité, car l'entrée dans le travail réel du travail provient d'une table de base de données. Le simple fait d'exécuter le travail sans ajouter d'enregistrements à cette table ne fera rien.
Je n'arrive pas à trouver comment accorder des autorisations publiques au travail.
Est-ce qu'il y a un moyen de faire ça? La seule chose à laquelle je peux penser à ce stade est d'avoir le travail en cours d'exécution (ou selon un calendrier), mais comme il n'a qu'à effectuer rarement un travail réel (peut-être une fois tous les quelques mois) et je veux que le travail soit fait dès qu'il existe, cela ne semble pas être une solution optimale.
la source
with execute as 'loginname'
, cela fonctionne-t-il?Fondamentalement, des autorisations sont nécessaires sur
sp_start_job
(voir la section autorisations).Les rôles sont décrits dans « Rôles de base de données fixes de l'Agent SQL Server » (liés par le haut)
Edit, janv 2012
Après le downvote anonyme 2 ans après avoir répondu ...
Lisez la question. Ça dit
ensuite
et aussi
Les commentaires d'OP ci-dessous contredisent la question
la source
Cela permettra à un utilisateur spécifique (utilisateur1) d'exécuter n'importe quel travail d'agent SQL.
Les membres de SQLAgentUserRole et SQLAgentReaderRole ne peuvent démarrer que les travaux dont ils sont propriétaires. Les membres de SQLAgentOperatorRole peuvent démarrer tous les travaux locaux, y compris ceux qui appartiennent à d'autres utilisateurs
USE [msdb] GO CREATE USER [user1] FOR LOGIN [user1] GO USE [msdb] GO ALTER ROLE [SQLAgentOperatorRole] ADD MEMBER [user1] GO
la source
J'ai un besoin similaire d'accorder à mon opérateur la permission d'exécuter manuellement les tâches de l'Agent SQL Server. J'ai suivi ce post Rôles de base de données fixes de l'Agent SQL Server pour accorder le rôle SQLAgentOperatorRole.
J'espère que cette aide pour résoudre votre cas.
la source