Opção possível:
Você precisa usar o
Logging
recurso no SSIS. Permite configurar os eventos para os quais deseja capturar as mensagens. Eu geralmente prefiro o log OnWarning
e OnError
para acompanhar todas as mensagens de aviso e erro que ocorrem no pacote. Você tem vários provedores para salvar os dados de registro. Prefiro usar o SQL Server para poder consultar as informações de log. Opções de registro mostradas no SSIS 2012:
Para habilitar o login em um pacote, você precisa clicar no pacote
Business Intelligence Development Studio (BIDS)
se você estiver desenvolvendo pacotes no SSIS 2005 - 2008 R2 ou SQL Server Data Tools (SSDT)
se você estiver desenvolvendo pacotes no SSIS 2012. Clique em
SSIS
menu e clique em Logging...
Você verá a caixa de diálogo Configurar logs do SSIS.
No lado esquerdo, você pode verificar o pacote ou tarefas individuais para registrar os dados do evento.
Em Provedores e registros guia, você pode selecionar um provedor apropriado no qual você pode salvar as informações de log. A captura de tela abaixo mostra que as informações do evento são capturadas em um banco de dados SQL Server usando o gerenciador de conexões
OLEDB_PracticeDB
. Nos Detalhes guia, você pode selecionar quais eventos deseja capturar. A captura de tela abaixo mostra que estou capturando os seguintes eventos.
- OnError
- Sobre informações
- OnTaskFailed
- Aviso
Obrigado a @William Todd Salzman por recomendar
OnTaskFailed
evento Exemplo de ilustração de pacote:
Digamos que temos um pacote chamado
SO_15004109.dtsx
com uma Tarefa de fluxo de dados e Tarefa de script . A Tarefa de Fluxo de Dados é apenas um boneco sem componentes internos. A tarefa de script tem o seguinte código no método Main para disparar informações personalizadas, mensagens de aviso e de erro para que possamos observar como ele é capturado na fonte de dados de log. O código foi escrito para o SSIS 2012, portanto, talvez seja necessário alterá-lo para o SSIS 2005. Escolhi
VB.NET
em vez de C#
porque você marcou esta pergunta em sql-server-2005
e o SSIS 2005 suporta apenas VB.NET. Código de tarefa de script em VB.NET para SSIS 2005 e superior.
#Region "Imports"
Imports System
Imports System.Data
Imports System.Math
Imports Microsoft.SqlServer.Dts.Runtime
#End Region
<Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute()> _
<System.CLSCompliantAttribute(False)> _
Partial Public Class ScriptMain
Inherits Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
Public Sub Main()
Dim fireAgain As Boolean = False
Dts.Events.FireInformation(101, "Custom Script Information", "This is a test information message.", String.Empty, 0, fireAgain)
Dts.Events.FireWarning(201, "Custom Script Warning", "This is a test warning message.", String.Empty, 0)
Dts.Events.FireError(201, "Custom Script Error", "This is a test error message.", String.Empty, 0)
Dts.TaskResult = ScriptResults.Success
End Sub
#Region "ScriptResults declaration"
Enum ScriptResults
Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success
Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
End Enum
#End Region
End Class
Se executarmos o pacote, ele falhará porque geramos um erro na Tarefa de script .
Se você navegar até a fonte de dados onde registrou os erros, notará que o SSIS cria uma tabela para registrar as informações se você escolher o provedor de log do SQL Server. A tabela abaixo lista a tabela de log que o SSIS cria no banco de dados do SQL Server escolhido para ser o provedor de log.
SSIS Version Log table name Table type
-------------- ---------------- ----------
SSIS 2005 dbo.sysdtslog90 User
SSIS 2008 dbo.sysdtslog100 User
SSIS 2008 R2 dbo.sysssislog System
SSIS 2012 dbo.sysssislog System
A consulta abaixo foi executada no banco de dados para visualizar os eventos capturados por este pacote de amostra. Você notará algumas mensagens duas vezes porque os eventos são registrados para cada contêiner e tarefa. A tabela é denominada
dbo.sysssislog
porque o pacote foi criado no SSIS 2012. select id, event, source, message from dbo.sysssislog;
Experiência pessoal com registro:
Eu tive bastante sucesso em apenas visualizar as mensagens de erro de log para entender o que deu errado. Depurar pacotes em ambiente de produção não é aconselhável, na minha opinião. No entanto, é preferível capturar eventos de log.
Quando trabalhei no SSIS 2005 e 2008, criei relatórios baseados em SSRS que consultam a tabela de log para gerar relatório diário das execuções de trabalho e enviar um anexo em PDF para pessoas de interesse.
As coisas melhoraram no SSIS 2012 que a ferramenta vem com recursos de relatórios integrados com Catálogo de serviços de integração que cria um banco de dados chamado
SSIDB
.