AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 9925
Accepted
topwik
topwik
Asked: 2011-12-30 10:31:17 +0800 CST2011-12-30 10:31:17 +0800 CST 2011-12-30 10:31:17 +0800 CST

Por que o valor Next Run Time do Sql Server Agent pode não ser o que eu esperava? E esta é definitivamente a próxima vez que meu trabalho será executado?

  • 772

Às vezes, vejo algumas inconsistências com o valor do SQL Server Agent nos campos sysjobschedules.next_run_date e time.

Eu tenho uma interface web que interage com o sistema de agendamento sql.

Criei um trabalho de teste que começou em 16 de março de 2011 às 9h45. Eu configurei para acontecer a cada 4 semanas em uma quarta-feira.

A partir de hoje, isso deve colocar a próxima data e hora de execução em 18 de janeiro às 9h45, mas o valor da próxima data/hora de execução para o meu trabalho é 4 de janeiro.

Os valores nas propriedades do trabalho parecem bons.
A data de início diz 16 de março de 2011.
Os valores de frequência estão todos corretos.
Mas parece que o SQL está falhando em conseguir essa ocorrência corretamente.

Aqui estão algumas informações relevantes para o trabalho em questão do sp_help_jobschedule proc

freq_type 8
freq_interval 8
freq_subday_type 1
freq_subday_interval 1
freq_relative_interval 0
freq_recurrence_factor 4
active_start_date 20110316
active_end_date 99991231
active_start_time 154500
active_end_time 55959
date_created 2011-12-29 20:37:05.737
schedule_description Every 4 week(s) on Wednesday at 154500
next_run_date 20120104
next_run_time 154500

se a data de início for 16 de março de 2011 às 9h45, não faz sentido que a próxima data de execução caia em 4 de janeiro de 2012 com base nas propriedades do trabalho.


Acho que minha pergunta é: quanto posso confiar nesses dados da próxima data de execução?

sql-server sql-server-agent
  • 5 5 respostas
  • 12213 Views

5 respostas

  • Voted
  1. Thomas Stringer
    2011-12-30T17:02:45+08:002011-12-30T17:02:45+08:00

    Quando você verificou esses dados? A msdb.dbo.sysjobschedulestabela é atualizada a cada 20 minutos. Portanto, se você o definiu e depois o alterou e, em seguida, executou o sp_help_jobscheduleprocedimento armazenado, os dados subjacentes podem não ter sido atualizados ainda.

    O que você obtém para next_scheduled_run_date ao executar esta consulta?

    exec sp_help_jobactivity @job_name = 'YourJobScheduleName'
    
    • 4
  2. Best Answer
    topwik
    2012-01-05T13:34:31+08:002012-01-05T13:34:31+08:00

    Com base na data de início ativo em 16 de março de 2011, em janeiro de 2012, esperamos que uma ocorrência programada chegue na quarta-feira, 18 de janeiro.

    Se a data de modificação desse planejamento se tornar maior que a data de início ativa, o SQL parecerá usar a data de modificação como ponto de partida para determinar a próxima quarta-feira para iniciar a sequência de 4 semanas.

    Se uma atualização estiver ocorrendo na terça-feira, 10 de janeiro, a próxima data de execução será quarta-feira, 11 de janeiro e todas as quartas-feiras subsequentes, 4 semanas a partir daí, agora será relativa a 11 de janeiro, que agora omite 18 de janeiro da sequência original.

    A data de início ativa parece não ter mais relevância para o servidor SQL ao calcular a próxima data de execução.

    Ele simplesmente escolherá o dia seguinte no futuro, a partir da data modificada, que corresponda ao dia da semana solicitado; neste caso, na próxima quarta-feira.

    • 2
  3. Alexander Zaltsman
    2013-10-18T05:23:40+08:002013-10-18T05:23:40+08:00

    Esta consulta pode ser útil, para obter detalhes do histórico, você pode participarmsdb.dbo.sysjobhistory

    SELECT   job.name AS JobName,  
        job.description AS [Description],  
        job.enabled AS IsEnabled,  
        max(act.start_execution_date) AS StartExecutionDate,  
        max(act.next_scheduled_run_date) AS NextScheduledRunDate  
    FROM     msdb.dbo.sysjobs AS job  
        LEFT OUTER JOIN  
        [msdb].[dbo].[sysjobactivity] AS act  
        ON act.job_id = job.job_id  
    GROUP BY job.name, job.description, job.enabled;
    
    • 2
  4. ne1410s
    2019-06-18T23:11:56+08:002019-06-18T23:11:56+08:00

    O Next Run(s) campo(s) no meu Monitor de Atividade de Trabalho não estavam de acordo com o(s) que foi obviamente configurado(s) no Agendamento de Trabalho.

    No meu caso, descobri que o SQL Server Agentserviço não estava funcionando (por algum motivo). Iniciei o serviço e atualizei o Job Activity Monitor, e os dados agora são precisos.

    • 1
  5. curlyhairedgenius
    2016-03-15T09:32:29+08:002016-03-15T09:32:29+08:00

    msdb.dbo.sp_help_jobsempre aparece para retornar o next_run_date/ real correto next_run_time.

    Ele usa sp_get_composite_job_info, que faz a seguinte chamada para realmente recuperar o next_run_date/ next_run_time:

          IF ((@@microsoftversion / 0x01000000) >= 8) -- SQL Server 8.0 or greater
            INSERT INTO @xp_results
            EXECUTE master.dbo.xp_sqlagent_enum_jobs @can_see_all_running_jobs, @job_owner, @job_id
          ELSE
            INSERT INTO @xp_results
            EXECUTE master.dbo.xp_sqlagent_enum_jobs @can_see_all_running_jobs, @job_owner
    

    Como sysjobscheduleparece não ser confiável, basta usar sp_help_job.

    Se você precisar manipular os valores retornados, pode usar o openrowsettruque:

          SELECT  * 
          FROM OPENROWSET('sqloledb', 'server=(local);trusted_connection=yes'
          , 'set fmtonly off exec msdb.dbo.sp_help_job')
    
    • 0

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Como você mostra o SQL em execução em um banco de dados Oracle?

    • 2 respostas
  • Marko Smith

    Como selecionar a primeira linha de cada grupo?

    • 6 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Posso ver Consultas Históricas executadas em um banco de dados SQL Server?

    • 6 respostas
  • Marko Smith

    Como uso currval() no PostgreSQL para obter o último id inserido?

    • 10 respostas
  • Marko Smith

    Como executar o psql no Mac OS X?

    • 11 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Marko Smith

    Passando parâmetros de array para um procedimento armazenado

    • 12 respostas
  • Martin Hope
    Manuel Leduc Restrição exclusiva de várias colunas do PostgreSQL e valores NULL 2011-12-28 01:10:21 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Stuart Blackler Quando uma chave primária deve ser declarada sem cluster? 2011-11-11 13:31:59 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    BrunoLM Guid vs INT - Qual é melhor como chave primária? 2011-01-05 23:46:34 +0800 CST
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +0800 CST
  • Martin Hope
    Patrick Como posso otimizar um mysqldump de um banco de dados grande? 2011-01-04 13:13:48 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve