Possibile opzione:
Devi utilizzare Logging
caratteristica in SSIS. Ti consente di configurare gli eventi per i quali desideri acquisire i messaggi. Di solito preferisco il registro OnWarning
e OnError
per tenere traccia di tutti i messaggi di avviso e di errore che si verificano nel pacchetto. Hai vari provider per salvare i dati di registrazione. Preferisco utilizzare SQL Server in modo da poter eseguire query sulle informazioni di registrazione.
Opzioni di registrazione mostrate da SSIS 2012:
Per abilitare l'accesso a un pacchetto, devi fare clic sul pacchetto Business Intelligence Development Studio (BIDS)
se stai sviluppando pacchetti in SSIS 2005 - 2008 R2 o SQL Server Data Tools (SSDT)
se stai sviluppando pacchetti in SSIS 2012.
Fare clic su SSIS
menu e quindi fare clic su Logging...
Verrà visualizzata la finestra di dialogo Configura registri SSIS.
Sul lato sinistro, puoi controllare il pacchetto o le singole attività per registrare i dati dell'evento.
Su Fornitori e registri scheda, è possibile selezionare un provider appropriato in cui salvare le informazioni di registro. Lo screenshot seguente mostra che le informazioni sugli eventi vengono acquisite in un database di SQL Server utilizzando il gestore connessione OLEDB_PracticeDB
.
Sui Dettagli scheda, puoi selezionare quali eventi desideri acquisire. Lo screenshot qui sotto mostra che sto acquisendo i seguenti eventi.
- OnError
- Informazioni
- Attività non riuscita
- Avviso
Grazie a @William Todd Salzman
per aver consigliato OnTaskFailed
evento
Illustrazione del pacchetto di esempio:
Supponiamo di avere un pacchetto chiamato SO_15004109.dtsx
con un Attività flusso di dati e Attività script . Data Flow Task è solo un fittizio senza componenti all'interno.
L'attività script ha il codice seguente nel metodo Main per generare informazioni personalizzate, messaggi di avviso e di errore in modo da poter osservare come viene acquisito nell'origine dati di registrazione. Il codice è scritto per SSIS 2012, quindi potrebbe essere necessario modificarlo per SSIS 2005. Ho scelto VB.NET
invece di C#
perché hai taggato questa domanda in sql-server-2005
e SSIS 2005 supporta solo VB.NET.
Codice attività script in VB.NET per SSIS 2005 e versioni successive.
#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 eseguiamo il pacchetto, fallirà perché abbiamo generato un errore all'interno dell'Attività script .
Se accedi all'origine dati in cui hai registrato gli errori, noterai che SSIS crea una tabella per registrare le informazioni se hai scelto il provider di registrazione di SQL Server. La tabella seguente elenca la tabella di registrazione creata da SSIS nel database di SQL Server scelto come provider di 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
La query seguente è stata eseguita nel database per visualizzare gli eventi acquisiti da questo pacchetto di esempio. Noterai alcuni messaggi due volte perché gli eventi vengono registrati per ogni container e attività. La tabella è denominata dbo.sysssislog
perché il pacchetto è stato creato in SSIS 2012.
select id, event, source, message from dbo.sysssislog;
Esperienza personale con la registrazione:
Ho avuto un discreto successo nel visualizzare i messaggi di errore di registrazione per capire cosa è andato storto. A mio parere, non è consigliabile eseguire il debug dei pacchetti nell'ambiente di produzione. Tuttavia, è preferibile acquisire gli eventi del registro.
Quando ho lavorato in SSIS 2005 e 2008, ho creato rapporti basati su SSRS che interrogano la tabella di registro per generare rapporti giornalieri sull'esecuzione dei lavori e inviare un allegato PDF alle persone di interesse.
Le cose sono migliorate in SSIS 2012 che lo strumento viene fornito con funzionalità di reporting integrate con Catalogo dei servizi di integrazione
che crea un database denominato SSIDB
.