Abilitazione della registrazione a livello di programmazione
Il motore di runtime include una raccolta di oggetti LogProvider che consentono l'acquisizione di informazioni specifiche degli eventi durante la convalida e l'esecuzione di pacchetti. Gli oggetti LogProvider sono disponibili per gli oggetti DtsContainer, compresi gli oggetti TaskHost, Package, ForLoop e ForEachLoop. La registrazione viene abilitata su singoli contenitori o sull'intero pacchetto.
Sono disponibili diversi tipi di provider di log che un contenitore può utilizzare. In questo modo è possibile creare e archiviare le informazioni del log in modo flessibile in molti formati. Per integrare un oggetto contenitore nella registrazione, sono necessari due passaggi: viene innanzitutto abilitata la registrazione, quindi viene selezionato un provider di log. Le proprietà LoggingOptions e LoggingMode del contenitore vengono utilizzate per specificare gli eventi registrati e per selezionare il provider di log.
Abilitazione della registrazione
La proprietà LoggingMode, disponibile in ogni contenitore in grado di eseguire la registrazione, determina se le informazioni degli eventi del contenitore vengono o meno registrate nel log eventi. Questa proprietà, a cui viene assegnato un valore della struttura DTSLoggingMode, è ereditata dall'elemento padre del contenitore per impostazione predefinita. Se il contenitore è un pacchetto, pertanto non dispone di elemento padre, la proprietà utilizza l'oggetto UseParentSetting, che per impostazione predefinita è Disabled.
Selezione di un provider di log
Dopo l'impostazione della proprietà LoggingMode su Enabled, viene aggiunto un provider di log alla raccolta SelectedLogProviders del contenitore per completare il processo. La raccolta SelectedLogProviders è disponibile sull'oggetto LoggingOptions e contiene i provider di log selezionati per il contenitore. Il metodo Add viene chiamato per creare un provider e per aggiungerlo alla raccolta. Il metodo restituisce quindi il provider di log aggiunto alla raccolta. Ogni provider include impostazioni di configurazione specifiche e queste proprietà vengono impostate tramite la proprietà ConfigString.
Nella tabella seguente sono elencati i provider di log disponibili, la relativa descrizione e le informazioni su ConfigString.
Provider |
Descrizione |
Proprietà ConfigString |
---|---|---|
SQL Server Profiler |
Genera tracce SQL che possono essere acquisite e visualizzate in SQL Server Profiler. L'estensione predefinita dei file per questo provider è trc. |
Non è richiesta alcuna configurazione. |
SQL Server |
Scrive le voci del log eventi nella tabella sysssislog in qualsiasi database di SQL Server. |
Il provider SQL Server richiede che siano specificati la connessione al database e anche il nome del database di destinazione. |
File di testo |
Scrive le voci del log eventi in file di testo ASCII in formato delimitato da virgole (CSV). L'estensione predefinita dei file per questo provider è log. |
Nome di una gestione connessione file. |
Registro eventi di Windows |
Registra nel registro eventi standard di Windows nel registro applicazioni del computer locale. |
Non è richiesta alcuna configurazione. |
File XML |
Scrive le voci del log eventi in un file in formato XML. L'estensione predefinita dei file per questo provider è xml. |
Nome di una gestione connessione file. |
Gli eventi vengono inclusi o esclusi dal log eventi impostando le proprietà EventFilterKind e EventFilter del contenitore. La struttura EventFilterKind contiene due valori, ExclusionFilter e InclusionFilter, che indicano se gli eventi aggiunti a EventFilter sono inclusi nel log eventi. Alla proprietà EventFilter viene quindi assegnata una matrice di stringhe che contiene i nomi degli eventi soggetti all'applicazione di filtri.
Nel codice seguente viene abilitata la registrazione su un pacchetto, viene aggiunto il provider di log per i file di testo nella raccolta SelectedLogProviders e viene specificato un elenco di eventi da includere nell'output della registrazione.
Esempio
using System;
using Microsoft.SqlServer.Dts.Runtime;
namespace Microsoft.SqlServer.Dts.Samples
{
class Program
{
static void Main(string[] args)
{
Package p = new Package();
ConnectionManager loggingConnection = p.Connections.Add("FILE");
loggingConnection.ConnectionString = @"C:\SSISPackageLog.txt";
LogProvider provider = p.LogProviders.Add("DTS.LogProviderTextFile.2");
provider.ConfigString = loggingConnection.Name;
p.LoggingOptions.SelectedLogProviders.Add(provider);
p.LoggingOptions.EventFilterKind = DTSEventFilterKind.Inclusion;
p.LoggingOptions.EventFilter = new String[] { "OnPreExecute",
"OnPostExecute", "OnError", "OnWarning", "OnInformation" };
p.LoggingMode = DTSLoggingMode.Enabled;
// Add tasks and other objects to the package.
}
}
}
Imports Microsoft.SqlServer.Dts.Runtime
Module Module1
Sub Main()
Dim p As Package = New Package()
Dim loggingConnection As ConnectionManager = p.Connections.Add("FILE")
loggingConnection.ConnectionString = "C:\SSISPackageLog.txt"
Dim provider As LogProvider = p.LogProviders.Add("DTS.LogProviderTextFile.2")
provider.ConfigString = loggingConnection.Name
p.LoggingOptions.SelectedLogProviders.Add(provider)
p.LoggingOptions.EventFilterKind = DTSEventFilterKind.Inclusion
p.LoggingOptions.EventFilter = New String() {"OnPreExecute", _
"OnPostExecute", "OnError", "OnWarning", "OnInformation"}
p.LoggingMode = DTSLoggingMode.Enabled
' Add tasks and other objects to the package.
End Sub
End Module
|