none
Banco MSDB - DÚVIDA RRS feed

  • Pergunta

  • Saudações!

    Prezados,

    Estou trabalhando em um inventário de JOBs do Sql Server Agent, estou desenvolvendo alguns controle de inserção, alteração e exclusão, o intuito é manter um documento sempre atualizado. Para tanto,preciso de algumas informações sobre o banco MSDB, pois conforme já sabido a tabela sysjobshistory não armazena histórico a mais (?) dias, acredito que seja uma maneira de controlar o volume de dados.

    Gostaria de saber o reais impactos de desenvolvimento e armazenamento de informações no banco msdb, não há problema em desenvolver novos objetos e popular tabelas?

    Alguém tem alguma experiência satisfatório/traumática quanto a algo parecido?

    Obrigado!




    segunda-feira, 3 de outubro de 2011 18:40

Respostas

  • Boa tarde Fábio!

    Os parâmetros de armazenamento de informações do SQL Agent são configuráveis:

    -- Botão direito em SQL Agent >> Properties >> Opção History

    Lá você pode configurar o tamanho do seu histórico.

    Outra solução seria criar uma tabela "espelho" da sysjobhystory, através de trigger ou Job mesmo, em um Banco de Dados "Administrativo", assim você manteria o histórico do Agent mesmo ele apagando em determinado momento.

    Como o Eduardo falou, usar Bancos de Sistema em produção não é uma boa prática.

    Abraço

    Pedro

    • Marcado como Resposta Fábio Battestin segunda-feira, 3 de outubro de 2011 21:03
    segunda-feira, 3 de outubro de 2011 20:27
  •    Fábio, aqui tem mais um artigo bacana para esclarecer http://technet.microsoft.com/pt-br/library/ms178028%28SQL.100%29.aspx, você pode até criar tabelas e popular porém irá ter diversas restrições o que não teria criando um banco de dados normal, o recomendado para estar usando um banco de sistema para criação de tabelas é como citado nesse artigo da Microsoft "Você não deve codificar instruções Transact-SQL que fazem consulta diretamente nas tabelas do sistema, a menos que seja a única maneira de obter informações exigidas pelo aplicativo.". Espero ter ajudado, valeu!
    • Marcado como Resposta Fábio Battestin segunda-feira, 3 de outubro de 2011 21:03
    segunda-feira, 3 de outubro de 2011 20:36

Todas as Respostas

  •              Boa tarde Fábio!, se eu entendi, sua dúvida seria se é uma boa prática estar usando o MSDB como um banco de produção seria isto?  Neste link http://technet.microsoft.com/pt-br/library/ms187112%28SQL.100%29.aspx é possível ver algumas restrições que o banco MSDB possui, e como se trata de um banco Padrão(De sistema do SQL SERVER) ele traz algumas configurações de total importância para o mesmo, e não é recomendável usa-lo para estar criando tabelas e usando para a produção, vai que algo dá errado.
    segunda-feira, 3 de outubro de 2011 19:00
  • Eduardo,

     

    Muito Obrigado! É exatamente isso, preciso saber as boas práticas, o link é bem interessante. Acredito que o melhor realmente seja não desenvolver no ambiente "system",  mas não achei nada quanto a criação de objetos e possíveis impactos.

     

    Valew!!

     

    segunda-feira, 3 de outubro de 2011 20:19
  • Boa tarde Fábio!

    Os parâmetros de armazenamento de informações do SQL Agent são configuráveis:

    -- Botão direito em SQL Agent >> Properties >> Opção History

    Lá você pode configurar o tamanho do seu histórico.

    Outra solução seria criar uma tabela "espelho" da sysjobhystory, através de trigger ou Job mesmo, em um Banco de Dados "Administrativo", assim você manteria o histórico do Agent mesmo ele apagando em determinado momento.

    Como o Eduardo falou, usar Bancos de Sistema em produção não é uma boa prática.

    Abraço

    Pedro

    • Marcado como Resposta Fábio Battestin segunda-feira, 3 de outubro de 2011 21:03
    segunda-feira, 3 de outubro de 2011 20:27
  •    Fábio, aqui tem mais um artigo bacana para esclarecer http://technet.microsoft.com/pt-br/library/ms178028%28SQL.100%29.aspx, você pode até criar tabelas e popular porém irá ter diversas restrições o que não teria criando um banco de dados normal, o recomendado para estar usando um banco de sistema para criação de tabelas é como citado nesse artigo da Microsoft "Você não deve codificar instruções Transact-SQL que fazem consulta diretamente nas tabelas do sistema, a menos que seja a única maneira de obter informações exigidas pelo aplicativo.". Espero ter ajudado, valeu!
    • Marcado como Resposta Fábio Battestin segunda-feira, 3 de outubro de 2011 21:03
    segunda-feira, 3 de outubro de 2011 20:36
  • Eduardo e Pedro,

     

    Valew pela ajuda, minha maior preocupação em criar tabelas no sistema era justamente a citada pelo Eduado "Você não deve codificar instruções Transact-SQL que fazem consulta diretamente nas tabelas do sistema, a menos que seja a única maneira de obter informações exigidas pelo aplicativo."

     

    Obrigado a todos!

    segunda-feira, 3 de outubro de 2011 21:05