Opción posible:
Debe hacer uso de Logging
función en SSIS. Le permite configurar los eventos para los que le gustaría capturar los mensajes. Normalmente prefiero el registro OnWarning
y OnError
para realizar un seguimiento de todos los mensajes de advertencia y error que se producen en el paquete. Tiene varios proveedores para guardar los datos de registro. Prefiero usar SQL Server para poder consultar la información de registro.
Opciones de registro mostradas desde SSIS 2012:
Para habilitar el inicio de sesión en un paquete, debe hacer clic en el paquete Business Intelligence Development Studio (BIDS)
si está desarrollando paquetes en SSIS 2005 - 2008 R2 o SQL Server Data Tools (SSDT)
si está desarrollando paquetes en SSIS 2012.
Haga clic en SSIS
y luego haga clic en Logging...
Verá el cuadro de diálogo Configurar registros de SSIS.
En el lado izquierdo, puede consultar el paquete o las tareas individuales para registrar los datos del evento.
En Proveedores y registros pestaña, puede seleccionar un proveedor adecuado en el que puede guardar la información de registro. La siguiente captura de pantalla muestra que la información de eventos se captura en una base de datos de SQL Server utilizando el administrador de conexión OLEDB_PracticeDB
.
En los Detalles pestaña, puede seleccionar qué eventos le gustaría capturar. La siguiente captura de pantalla muestra que estoy capturando los siguientes eventos.
- SobreError
- Sobre la información
- Error en la tarea
- En Advertencia
Gracias a @William Todd Salzman
por recomendar OnTaskFailed
evento
Ilustración del paquete de muestra:
Digamos que tenemos un paquete llamado SO_15004109.dtsx
con una tarea de flujo de datos y Tarea de secuencia de comandos . Data Flow Task es solo un maniquí sin componentes en su interior.
La tarea de secuencia de comandos tiene el siguiente código en el método principal para activar información personalizada, mensajes de advertencia y de error para que podamos observar cómo se captura en la fuente de datos de registro. El código está escrito para SSIS 2012, por lo que es posible que deba modificarlo para SSIS 2005. Elegí VB.NET
en lugar de C#
porque ha etiquetado esta pregunta en servidor-sql-2005
y SSIS 2005 solo es compatible con VB.NET.
Código de tarea de script en VB.NET para SSIS 2005 y 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
Si ejecutamos el paquete, fallará porque generamos un error dentro de la Tarea de script .
Si navega a la fuente de datos donde registró los errores, notará que SSIS crea una tabla para registrar la información si elige el proveedor de registro de SQL Server. La siguiente tabla enumera la tabla de registro que SSIS crea en la base de datos de SQL Server elegida para ser el proveedor de registro.
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
La siguiente consulta se ejecutó en la base de datos para ver los eventos capturados por este paquete de muestra. Notará algunos mensajes dos veces porque los eventos se registran para cada contenedor y tarea. La tabla se llama dbo.sysssislog
porque el paquete se creó en SSIS 2012.
select id, event, source, message from dbo.sysssislog;
Experiencia personal con el registro:
He tenido bastante éxito al ver los mensajes de error de registro para comprender qué salió mal. En mi opinión, no es aconsejable depurar paquetes en el entorno de producción. Sin embargo, es preferible capturar eventos de registro.
Cuando trabajé en SSIS 2005 y 2008, creé informes basados en SSRS que consultan la tabla de registro para generar un informe diario de las ejecuciones de trabajos y enviar un archivo PDF adjunto a las personas de interés.
Las cosas han mejorado en SSIS 2012 que la herramienta viene con capacidades de generación de informes integradas con Catálogo de servicios de integración
que crea una base de datos llamada SSIDB
.