none
O que é JOB?

    Question

  • Boa tarde a todos,

     

    sou programador Delphi, e utilizo o SQL Server 2000 como base de dados para meus sistemas.

    Tenho lido em algumas listas de discussões os usuários comentando sobre essas JOB´s, mas sou iniciante em programação, busquei no Google, no MSDN e no site da Microsoft, alguma informação desse tipo.

    Achei bastante duvidas de usuários, com erros, mas nada que pudesse me satisfazer.

     

    Minhas duvidas são:

    O que é uma JOB?

    Quais as principais aplicações para ela?

    Pelo que entendi nos sites que entrei, ela é como uma Stored Procedure, ou Function?

     

    Se alguém tiver um arquivo que possa me encaminhar, meu e-mail é linogonzalez@gmail.com

     

    Sem mais agradeço,

     

    Ricardo Lino Gonzalez

    Programador Jr

    Thursday, January 10, 2008 5:58 PM

Answers

  • Oi Ricardo,

     

    Vi que você mencionou o SQL Server 2000. Seguem os passos:

     

    - Abra o Query Analyser
    - Conecte-se a um banco de dados qualquer
    - Crie um tabela Ex: CREATE TABLE tblTeste (CODIGO INT)
    - Abra o Enterprise Manager
    - Clique sobre o seu servidor
    - Navegue até o nó Management, SQL Server Agent (Se ele estiver parado, inicie-o)
    - Clique com o botão direito sobre Jobs e em seguida New Job
    - Na aba General dê apenas um nome para o JOB
    - Vá na aba STEP e clique sobre New STEP
    - Dê um nome para seu STEP, deixe o TYPE como Transact-SQL Script (TSQL) e em Database escolha o banco onde você rodou o create table
    - Em Command, digite INSERT INTO tblTeste (CODIGO) VALUES (1) e clique em OK
    - Vá na aba Schedules e clique em New Schedule
    - Dê um nome para o Schedule e clique em Change
    - Defina os dias e horários que deseje que o job seja executado e clique em Ok três vezes para salvar o Job

     

    Nesse momento, o JOB aparecerá no Enterprise Manager e estará pronto para ser executado nos horários definidos.

     

    Você pode rodá-lo a qualquer momento clicando sobre ele com o botão direito e em seguida escolher Start Job

    Para visualizar o script gerado, clique no JOB com o botão direito e em seguida All Tasks, Generate Script

    Apenas para efeito de testes, execute o JOB e verifique se a tabela foi atualizada.

     

    [ ]s,

     

    Gustavo

    Thursday, January 10, 2008 6:41 PM
    Moderator

All replies

  •  

    Minhas duvidas são:

    O que é uma JOB?

     

    job e um procedimento de servico agendado por exemplo um backup vc. cria um job de backup e agenda ele para rodar a noite entao ele roda sozinho a noite, vc. pode usar um job para muitas coisas como atualizar tabelas, etc.

     

     

    Pelo que entendi nos sites que entrei, ela é como uma Stored Procedure, ou Function?

     

    nao um job nao e storeprocedure , function ele e uma ferramenta para executar esses procedimentos.

     

    espero ter ajudado qualquer coisa retorne.

    Thursday, January 10, 2008 6:04 PM
    Moderator
  • Boa Tarde,

     

    A maioria das utilizações de banco de dados por programadores tem algum tipo de interação. Ex: Um usuário disparando uma instrução SQL, uma aplicação executando uma Stored Procedure, etc. No entanto, como fazer com que em determinada hora o banco de dados rode alguma coisa ?

     

    Os jobs servem para que o banco de dados em algum momento execute algum trabalho (daí o nome JOB) sem nenhuma intervenção de um administrador ou aplicativo. Ele é muito utilizado em diversas atividades de um DBA como realização de backups, atualização das estatísticas, recriação dos índices, etc. Isso é necessário, pois, não faria sentido colocar um DBA que todo dia às 0h rodasse um backup, às 3h reindexasse os bancos, etc. São tarefas muito rotineiras e a melhor forma de executá-las é agendando-as. Para isso que os JOBS servem.

     

    Os jobs podem rodar diversos tipos de comandos. Você pode agendar um job para executar um backup, uma procedure que atualize um saldo, um ActiveX em VBScript para gerar arquivos, um processo de replicação de dados, a execução de um pacote DTS (ou SSIS) de migração de dados, etc.

     

    [ ]s,

     

    Gustavo

     

    Thursday, January 10, 2008 6:14 PM
    Moderator
  • Boa tarde Gustavo,

     

    Se não for muito abuso, você poderia me enviar um script para criar um job para rodar as 0:00?

     

    Apenas para ter uma ideia de como funciona e como se cria.

     

    Sem mais,

     

    Ricardo Lino Gonzalez

    Thursday, January 10, 2008 6:25 PM
  • Ricardo,

     

    Inicialmente gostaria de dar as boas vindas ao nosso fórum, fique a vontade para participar e nos ajudar.

     

    Sobre as suas dúvidas, gostaria de expressar a minha opinião.

     

    O que é uma JOB?

    Job(tarefa) trata-se de um rotina ou procedimento agendado para ser executado no SQL Server, sendo que este procedimento é composto por um ou mais passos(step's) que devem ser executados para realizar algum tipo de processamento de forma automática, com o objetivo de automatizar ainda mais um determinado processo que estará sendo processo pelo pelo servidor.

    O Job pode ser criado através do próprio agente do SQL Server como também através dos comandos transact SQL.

     

    Quais as principais aplicações para ela?

     

    Existem várias forma de se utilizar um Job, como por exemplo para fazer Backup, Restore, exportação e importação de dados, manutenção em índices, entre outras coisas.

     

    Pelo que entendi nos sites que entrei, ela é como uma Stored Procedure, ou Function?

     

    Não JOB são coisas completamente diferentes.

     

    Stored Procedure --> Trata-se de um processo executado diretamente pelo servidor SQL Server, sem ter a necessidade de uma aplicação executar tal processo, ou seja, o SQL Server vai realizar a execução e controle, mas que não irá retornar obrigatoriamente um valor ou conjunto de informações.

     

    Função - Trata-se de um processo executado diretamente pelo servidor SQL Server, sem ter a necessidade de uma aplicação executar tal processo, ou seja, o SQL Server vai realizar a execução e controle, mas que irá retornar obrigatoriamente um valor ou conjunto de informações.

    Thursday, January 10, 2008 6:26 PM
  • Olá Ricardo,

     

    Se eu lhe passar o script diretamente, não seria muito produtivo. Proponho que te mostre como gerar um job e posteriormente você visualizar o script gerado. Qual SQL Server você está utilizando ? 2000 ou 2005 ?

     

    [ ]s,

     

    Gustavo

     

    Thursday, January 10, 2008 6:32 PM
    Moderator
  • Claro, estou utilizando o SQL Server 2000.

    Muito obrigado.

    Thursday, January 10, 2008 6:38 PM
  • Oi Ricardo,

     

    Vi que você mencionou o SQL Server 2000. Seguem os passos:

     

    - Abra o Query Analyser
    - Conecte-se a um banco de dados qualquer
    - Crie um tabela Ex: CREATE TABLE tblTeste (CODIGO INT)
    - Abra o Enterprise Manager
    - Clique sobre o seu servidor
    - Navegue até o nó Management, SQL Server Agent (Se ele estiver parado, inicie-o)
    - Clique com o botão direito sobre Jobs e em seguida New Job
    - Na aba General dê apenas um nome para o JOB
    - Vá na aba STEP e clique sobre New STEP
    - Dê um nome para seu STEP, deixe o TYPE como Transact-SQL Script (TSQL) e em Database escolha o banco onde você rodou o create table
    - Em Command, digite INSERT INTO tblTeste (CODIGO) VALUES (1) e clique em OK
    - Vá na aba Schedules e clique em New Schedule
    - Dê um nome para o Schedule e clique em Change
    - Defina os dias e horários que deseje que o job seja executado e clique em Ok três vezes para salvar o Job

     

    Nesse momento, o JOB aparecerá no Enterprise Manager e estará pronto para ser executado nos horários definidos.

     

    Você pode rodá-lo a qualquer momento clicando sobre ele com o botão direito e em seguida escolher Start Job

    Para visualizar o script gerado, clique no JOB com o botão direito e em seguida All Tasks, Generate Script

    Apenas para efeito de testes, execute o JOB e verifique se a tabela foi atualizada.

     

    [ ]s,

     

    Gustavo

    Thursday, January 10, 2008 6:41 PM
    Moderator
  • Hum...

    agora com esse script posso fazer o que eu precisar...

    muito obrigado...

     

    Tenho uma ultima duvida...

    Como posso iniciar o SQL Server Agent atravez de um Transact-SQL Script.

     

    Porque os meus clientes, não tem o Enterprise Manager em seus servidores, por isso tudo necessito fazer atravez de Scripts.

     

    Sem mais agradeço.

     

    Ricardo Lino Gonzalez

    Thursday, January 10, 2008 7:04 PM
  • Oi Ricardo,

     

    Por se tratar de um serviço e não de algo relacionado à banco de dados, não deveria ser responsabilidade do SQL Server iniciar um serviço (mesmo que seja o SQL Agent). O mais correto seria fazer isso com VBScritpt ou alguma BAT.

     

    Como o SQL Server dispõe de mecanismos de ativar o SHELL, você poderá fazer isso da seguinte forma:

     

    EXEC master.dbo.xp_cmdshell 'NET START SQLAGENT'

     

    Se estivermos falando de uma instância nomeada, tente o seguinte:

     

    EXEC master.dbo.xp_cmdshell 'NET START SQLAGENT$NomedaInstancia'

     

    Você pode abrir um prompt de comando e rodar os comandos NET que te passei. Acho mais seguro do que envolver o SQL Server nisso.

     

    [ ]s,

     

    Gustavo

    Thursday, January 10, 2008 7:09 PM
    Moderator
  •  

    Ok muito obrigado...

    você me ajudou muito...

    Thursday, January 10, 2008 7:18 PM
  • Gustavo,

     

    Particularmente eu prefiro utilizar arquivo bat, justamente para evitar a utilização de extended stored procedure ou de VB.Script, por questões de segurança, sabendo que somente usuários com permissão de administrador podem fazer uso da xp_cmdshell.

    Thursday, January 10, 2008 7:28 PM
  • É...

    o unico problema é que em minhas aplicações eu não tenho niveis de acesso...

    tudo é gerenciado pelo sistema...

    agora estou pensando em alterar esses padrões...

    para algo mais seguro

    Thursday, January 10, 2008 7:32 PM
  • Boa Tarde,

     

    Eu também não acho uma boa idéia (justamente por questões de segurança) utilizar o SQL Server para esse tipo de coisa. O ideal é a BAT mesmo, até porque iniciar serviço é coisa de SO e não de banco.

     

    Na minha opinião, seria mais sensato codificar uma BAT ou alguma outra coisa que iniciasse o serviço (algum agente de monitoramento por exemplo).

     

    No caso do SQL Server 2005, com a cláusula EXECUTE AS, é possível resolver esses problemas de segurança, mas como não é o caso... Ficamos com poucas opções.

     

    Se for o caso, acharia bom abrirmos um novo POST para dúvida e sugestões. Esse post está ficando extenso e já não estamos falando da dúvida original sobre o JOB

     

    [ ]s,

     

    Gustavo

     

    Thursday, January 10, 2008 7:44 PM
    Moderator
  • Eu entendo o que você está dizendo...

    mas tambem posso iniciar ela pelo meu sistema mesmo...

    assim não preciso criar nenhum BAT

     

    Essas Jobs serão de grande utilidade para a manutenção do banco de dados, sem dizer que estou com varias ideias para algumas coisas que estou tendo que tratar no meu sistema que posso tirar e colocar para o servidor sql executar.

     

    Principalmente atualização de saldos e o backups, que toma muito tempo do usuario, com o sistema parado.

    não será necessario uma nova thread. Talvez ou outro dia eu venha a lhe importunar novamente sobre dts, mas será uma nova thread.

     

    Muito obrigado pela ajuda.

    Thursday, January 10, 2008 8:03 PM
  • Ok Ricardo,

     

    Quando isso acontecer, será um prazer ajudá-lo. Espero que os Jobs resolvam os seus problemas por enquanto.

     

    [ ]s,

     

    Gustavo

     

    Thursday, January 10, 2008 8:08 PM
    Moderator