Quando você cria uma etapa de trabalho TSQL, há uma configuração avançada chamada: "Incluir saída da etapa no histórico", mas não entendo o que essa configuração controla:
Um exemplo de script de trabalho:
DECLARE @jobId BINARY(16)
EXEC msdb.dbo.sp_add_job @job_name=N'SampleJob',
@enabled=1,
@notify_level_eventlog=0,
@notify_level_email=2,
@notify_level_netsend=2,
@notify_level_page=2,
@delete_level=0,
@category_name=N'[Uncategorized (Local)]',
@owner_login_name=N'', @job_id = @jobId OUTPUT
EXEC msdb.dbo.sp_add_jobstep @job_name=N'SampleJob', @step_name=N'Include step in history',
@step_id=1,
@cmdexec_success_code=0,
@on_success_action=1,
@on_fail_action=2,
@retry_attempts=0,
@retry_interval=0,
@os_run_priority=0, @subsystem=N'TSQL',
@command=N'print ''Include step in history''',
@database_name=N'master',
@flags=4
EXEC msdb.dbo.sp_add_jobserver @job_name=N'SampleJob', @server_name = null
Independentemente de estar marcado ou não, não consigo fazer com que a saída da etapa apareça no histórico de tarefas:
Observe que tenho um comando CMD que gera uma saída para o histórico.
Então, parece que essa configuração não controla nada para as etapas do trabalho TSQL ou isso gera saída em outro lugar?
Observe que não tenho nenhum problema com as configurações "Registrar na tabela" / "Acrescentar saída", elas controlam sysjobstepslogs
a saída.
Nota nº 2: todas as saídas de etapas estão sendo adicionadas sysjobhistory
, independentemente de esse sinalizador estar definido ou não, então não parece ser isso também.
Após alguma colaboração e experimentação, determinamos que a caixa de seleção mostrará a saída do conjunto de resultados em
sysjobhistory
-, desde que nenhuma outra instrução que afete a saída, comoPRINT
ouRAISERROR
, seja executada na mesma etapa.Se você marcar a caixa "Incluir saída de etapas no histórico":
O próximo passo:
Levará à seguinte linha em
sysjobhistory
(cr/lf adicionado por mim):O próximo passo:
Resultados na seguinte linha em
sysjobhistory
, sem a saída do conjunto de resultados:Se você quiser que a saída da etapa acabe em algum lugar de forma confiável , independentemente do restante da etapa do trabalho (ou quaisquer alterações futuras), escolha também a opção "Log to table" - nesse caso, a saída será capturada em
sysjobstepslogs
mesmo quando for suprimida desysjobhistory
. Essas mesmas duas etapas produziriam o seguinte nalog
coluna. Etapa 1 (sem impressão):Etapa 2 (com impressão):
Apenas tome cuidado com a quantidade de saída que você pode ter, porque isso pode explodir
msdb
se você não tomar cuidado.