Tengo un trabajo en mi servidor MSSQL 2005, que quiero permitir que se ejecute cualquier usuario de la base de datos.
No me preocupa la seguridad, ya que la entrada al trabajo real del trabajo proviene de una tabla de base de datos. Simplemente ejecutar el trabajo, sin agregar registros a esa tabla no hará nada.
Simplemente no puedo encontrar cómo otorgar permisos públicos para el trabajo.
¿Hay alguna forma de hacer esto? Lo único en lo que puedo pensar en este momento es tener el trabajo en ejecución constantemente (o en un horario), pero dado que solo necesita hacer un trabajo real raramente (tal vez una vez cada pocos meses) y quiero que el trabajo sea hecho tan pronto como existe, esto no parece ser una solución óptima.
fuente
with execute as 'loginname'
, ¿eso funciona?Básicamente, se necesitan permisos en
sp_start_job
(consulte la sección de permisos).Los roles se describen en " Roles de base de datos fijos del Agente SQL Server " (enlazados desde arriba)
Edit, ene 2012
Después del voto anónimo anónimo 2 años después de que respondí ...
Lea la pregunta. Dice
luego
y también
Entonces, los comentarios de OP a continuación contradicen la pregunta
fuente
Esto permitirá que un usuario específico (usuario1) ejecute cualquier trabajo de Agente SQL.
Los miembros de SQLAgentUserRole y SQLAgentReaderRole solo pueden iniciar trabajos de su propiedad. Los miembros de SQLAgentOperatorRole pueden iniciar todos los trabajos locales, incluidos los que son propiedad de otros usuarios
USE [msdb] GO CREATE USER [user1] FOR LOGIN [user1] GO USE [msdb] GO ALTER ROLE [SQLAgentOperatorRole] ADD MEMBER [user1] GO
fuente
Tengo una necesidad similar de otorgar permiso a mi operador para ejecutar manualmente las tareas del Agente SQL Server. Seguí esta publicación Roles de base de datos fijos del Agente SQL Server para otorgar el rol SQLAgentOperatorRole.
Espero que esto ayude a resolver su caso.
fuente