none
SQL2008 Liberar acesso à jobs RRS feed

  • Pergunta

  • Existe um usuário no SQL que tem acesso de dbowner à 2 bancos de uma determinada instância. Essa instância tem mais de 15 bancos. Esse usuário não tem acesso aos demais bancos.

    Eu gostaria de dar acesso à jobs para esse usuário, mas não quero que ele tenha acesso à jobs que não sejam referentes aos 2 bancos dos quais ele é owner.

    Como eu faço para liberar esse acesso à ele ? E existe alguma maneira de liberar esse acesso apenas para consulta, sem permitir criação de novos jobs ?

    Eduardo

    terça-feira, 6 de julho de 2010 12:18

Respostas

  • Eu estou pensando em uma outra opção...

    Será que eu não poderia dar deny na stored procedure sp_add_job para o login SQL que possui a role SqlAgentUserRole ?

    Acho que o comando seria assim :

    DENY EXECUTE ON OBJECT :: dbo.sp_add_job to LOGIN

    Alguém já fez isso ? Seria essa a sintaxe ?

    • Marcado como Resposta efcampos quarta-feira, 7 de julho de 2010 20:02
    quarta-feira, 7 de julho de 2010 16:21

Todas as Respostas

  • terça-feira, 6 de julho de 2010 15:21
  • Eu dei a permissão SQLAgentUserRole no banco MSDN para esse login, e ele consegue visualizar apenas o que eu quero que ele visualize.

    Porém, ele consegue também criar e modificar jobs, e eu não gostaria que ele fizesse isso. Um script mal executado dentro de um job pode travar os outros bancos.

    Eu vi que existe a permissão db_denydatawriter. Se eu flegar essa role, será que eu consigo tudo o que eu quero ? que ele visualize seus jobs, mas não consiga criar/alterar nenhum ? Seria esse o caminho ?

    terça-feira, 6 de julho de 2010 19:56
  • Eu usei o db_denydatawriter, mas ele continua conseguindo criar jobs.

    Existe alguma forma de permitir que ele visualize os jobs, sem que consiga criar jobs ?

     

    terça-feira, 6 de julho de 2010 20:08
  • Eduardo,

    Basicamente se o usuário consegui acessar os jobs ele também será acesso a criar os mesmo, pois trata-se de objetos existentes no MSDB, ainda mais se este usuário for configurado como db_owner do banco.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário]
    terça-feira, 6 de julho de 2010 23:40
    Moderador
  • Eduardo,

    Qual é a versão do SQL Server?

    No SQL Server 2008 temos o DMF, não sei ao certo, mas talvez poderíamos pensar em criar um política sobre o banco MSDB, para este usuário, tentando limitar esta operação.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário]
    terça-feira, 6 de julho de 2010 23:41
    Moderador
  • SQL2008 Enterprise Edition 64bit 10.0.1600.22.

    Tem alguma dica sobre esse tal de DMF ?

    quarta-feira, 7 de julho de 2010 13:45
  • Eu estou pensando em uma outra opção...

    Será que eu não poderia dar deny na stored procedure sp_add_job para o login SQL que possui a role SqlAgentUserRole ?

    Acho que o comando seria assim :

    DENY EXECUTE ON OBJECT :: dbo.sp_add_job to LOGIN

    Alguém já fez isso ? Seria essa a sintaxe ?

    • Marcado como Resposta efcampos quarta-feira, 7 de julho de 2010 20:02
    quarta-feira, 7 de julho de 2010 16:21
  • Eduardo,

    Realmente parece ser uma solução, eu particularmente nunca realizei o bloqueio para objetos do próprio sistema.

    A sintaxe é essa mesma.

    Em relação do DMF, é um Framework existente no SQL Server 2008 que permite a criação de políticas de segurança, sobre o servidor, banco, tabelas e demais objetos existentes em uma instância SQL Server.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário]
    quarta-feira, 7 de julho de 2010 17:36
    Moderador
  • Sim.

    O comando DENY EXECUTE ON OBJECT :: dbo.sp_add_job to LOGIN funcionou sem problemas.

    O usuário consegue ver o histórico de seus jobs, mas não consegue criar novos.

    Obrigado pela ajuda.

    Eduardo

    quarta-feira, 7 de julho de 2010 20:02