none
Problema em checklist de jobs RRS feed

  • Pergunta

  • Estou seguindo um tutorial para montar um check list diário, já está praticamente tudo funcionando, menos a parte de jobs que falharam.

    O script que peguei está igualzinho e não consigo mais entender o por que da problema.

    Erro:Msg 8152, Level 16, State 2, Procedure sp_help_jobhistory_full, Line 50
    String or binary data would be truncated.

    (0 row(s) affected)

    Segue o código:

    if OBJECT_ID('Tempdb..#Result_History_Jobs') is not null    drop table #Result_History_Jobs
    
    create table #Result_History_Jobs(
          Cod int identity(1,1),Instance_Id int, Job_Id varchar(255),Job_Name varchar(255),Step_Id int,Step_Name varchar(255),
          Sql_Message_Id int,Sql_Severity int,SQl_Message varchar(3990),Run_Status int, Run_Date varchar(20),
          Run_Time varchar(20),Run_Duration int,Operator_Emailed varchar(100),Operator_NetSent varchar(100),
          Operator_Paged varchar(100),Retries_Attempted int, Nm_Server varchar(100))
    
    IF (OBJECT_ID('_CheckList_Jobs_Failed') IS NOT NULL)  DROP TABLE _CheckList_Jobs_Failed
    
    declare @hoje varchar (8)
    declare @ontem varchar (8)
    set @ontem  =  convert (varchar(8),(dateadd (day, -1, getdate())),112)
    
    insert into #Result_History_Jobs
    exec Msdb.dbo.SP_HELP_JOBHISTORY @mode = 'FULL' , @start_run_date =  @ontem  
    
    select Job_Name, case when Run_Status = 0 then 'Failed'
                                   when Run_Status = 1 then 'Succeeded'
                                   when Run_Status = 2 then 'Retry (step only)'
                                   when Run_Status = 3 then 'Canceled'
                                   when Run_Status = 4 then 'In-progress message'
                                   when Run_Status = 5 then 'Unknown' end Status,
          cast(Run_Date + ' ' +
          right('00' + substring(Run_time,(len(Run_time)-5),2) ,2)+ ':' +
          right('00' + substring(Run_time,(len(Run_time)-3),2) ,2)+ ':' +
          right('00' + substring(Run_time,(len(Run_time)-1),2) ,2) as varchar) Dt_Execucao,
          right('00' + substring(cast(Run_Duration as varchar),(len(Run_Duration)-5),2) ,2)+ ':' +
          right('00' + substring(cast(Run_Duration as varchar),(len(Run_Duration)-3),2) ,2)+ ':' +
          right('00' + substring(cast(Run_Duration as varchar),(len(Run_Duration)-1),2) ,2)  Run_Duration,
          SQL_Message
    into _CheckList_Jobs_Failed
    from #Result_History_Jobs
    where
          cast(Run_Date + ' ' + right('00' + substring(Run_time,(len(Run_time)-5),2) ,2)+ ':' +
          right('00' + substring(Run_time,(len(Run_time)-3),2) ,2)+ ':' +
          right('00' + substring(Run_time,(len(Run_time)-1),2) ,2) as datetime) >= @ontem + ' 17:00'   --dia anterior no horário
          and Step_Id = 0
          and Run_Status <> 1
    order by Dt_Execucao


    Caio Amante

    terça-feira, 5 de junho de 2012 20:37

Respostas

  • Perdão, foi eu que engoli um sapo.

    Na verdade, você deve rodar apenas isto e verificar:

    declare @hoje varchar (8)
    declare @ontem varchar (8)
    set @ontem  =  convert (varchar(8),(dateadd (day, -1, getdate())),112)
    
    exec Msdb.dbo.SP_HELP_JOBHISTORY @mode = 'FULL' , @start_run_date =  @ontem 


    Antero Marques

    terça-feira, 5 de junho de 2012 21:27
  • Parceiro descobri o que era.

    O campo SQl_Message varchar(6990) eu aumentei e funcionou na hora.

    Se não fosse sua ajuda.

    Ponto para voce.

    Abraço e muito obrigado.

    conte comigo.


    Caio Amante

    terça-feira, 5 de junho de 2012 21:54

Todas as Respostas

  • Na hora de inserir os dados na tabela #Result_History_Jobs alguma informação é maior que o definido para o campo dela.

    No seu script retire o "into _CheckList_Jobs_Failed" e rode.

    Verifique se há alguma informação maior que o definido para ela no campo da tabela.


    Antero Marques

    terça-feira, 5 de junho de 2012 21:13
  • Fazendo o que me solicitou deu o mesmo erro.

    Msg 8152, Level 16, State 2, Procedure sp_help_jobhistory_full, Line 50
    String or binary data would be truncated.

    (0 row(s) affected)

    O trecho que começa o erro é esse:

    declare @hoje varchar (8)
    declare @ontem varchar (8)
    set @ontem  =  convert (varchar(8),(dateadd (day, -1, getdate())),112)

    insert into #Result_History_Jobs
    exec Msdb.dbo.SP_HELP_JOBHISTORY @mode = 'FULL' , @start_run_date =  @ontem 


    Caio Amante

    terça-feira, 5 de junho de 2012 21:24
  • Perdão, foi eu que engoli um sapo.

    Na verdade, você deve rodar apenas isto e verificar:

    declare @hoje varchar (8)
    declare @ontem varchar (8)
    set @ontem  =  convert (varchar(8),(dateadd (day, -1, getdate())),112)
    
    exec Msdb.dbo.SP_HELP_JOBHISTORY @mode = 'FULL' , @start_run_date =  @ontem 


    Antero Marques

    terça-feira, 5 de junho de 2012 21:27
  • Desta forma rodou normalmente, opa deu uma luz.

    Caio Amante

    terça-feira, 5 de junho de 2012 21:40
  • Parceiro descobri o que era.

    O campo SQl_Message varchar(6990) eu aumentei e funcionou na hora.

    Se não fosse sua ajuda.

    Ponto para voce.

    Abraço e muito obrigado.

    conte comigo.


    Caio Amante

    terça-feira, 5 de junho de 2012 21:54
  • Que bom que ajudou você Caio.

    Obrigado pelo feedback.

    Abraço, fica com Deus !


    Antero Marques

    quarta-feira, 6 de junho de 2012 01:30