Tenho um trabalho no meu servidor MSSQL 2005 que desejo permitir que qualquer usuário do banco de dados seja executado.
Não estou preocupado com segurança, pois a entrada para o trabalho real do trabalho vem de uma tabela de banco de dados. Apenas executar o trabalho, sem adicionar registros a essa tabela, não fará nada.
Não consigo encontrar como conceder permissões públicas ao trabalho.
Há alguma maneira de fazer isso? A única coisa em que posso pensar neste momento é ter o trabalho constantemente em execução (ou dentro de um cronograma), mas como ele só precisa realizar algum trabalho real raramente (talvez uma vez a cada poucos meses) e eu quero que o trabalho seja feito assim que existir, isso não parece ser uma solução ideal.
fonte
with execute as 'loginname'
, isso funciona?Basicamente, são necessárias
sp_start_job
permissões (consulte a seção de permissões).As funções são descritas em " Funções de banco de dados fixas do SQL Server Agent " (vinculadas acima)
Editar, janeiro de 2012
Após o voto anônimo 2 anos depois, eu respondi ...
Leia a pergunta. Diz
então
e também
Portanto, os comentários do OP abaixo contradizem a pergunta
fonte
Isso permitirá que um usuário específico (usuário1) execute qualquer trabalho do Sql Agent.
Os membros de SQLAgentUserRole e SQLAgentReaderRole podem iniciar apenas tarefas de sua propriedade. Os membros do SQLAgentOperatorRole podem iniciar todos os trabalhos locais, incluindo aqueles pertencentes a outros usuários
USE [msdb] GO CREATE USER [user1] FOR LOGIN [user1] GO USE [msdb] GO ALTER ROLE [SQLAgentOperatorRole] ADD MEMBER [user1] GO
fonte
Tenho uma necessidade semelhante de conceder permissão para o meu operador executar manualmente as tarefas do SQL Server Agent. Segui esta postagem Funções de banco de dados fixas do SQL Server Agent para conceder a função SQLAgentOperatorRole.
Espero que isso ajude a resolver seu caso.
fonte