Habilitando o registro em log programaticamente
O mecanismo de tempo de execução fornece uma coleção de objetos LogProvider que permitem que informações específicas a eventos sejam capturadas durante a validação e a execução de pacotes. Os objetos LogProvider estão disponíveis para objetos DtsContainer, inclusive os objetos TaskHost, Package, ForLoop e ForEachLoop. O registro em log é habilitado em contêineres individuais ou no pacote inteiro.
Há vários tipos de provedores de log disponíveis para uso por um contêiner. Isso fornece a flexibilidade para criar e armazenar informações de log em diversos formatos. A inscrição de um objeto contêiner no registro em log é um processo de duas etapas: primeiro o registro é habilitado e depois um provedor de log é selecionado. As propriedades LoggingOptions e LoggingMode do contêiner são usadas para especificar os eventos registrados e selecionar o provedor de log.
Habilitando o registro em log
A propriedade LoggingMode, localizada em cada contêiner que pode executar o registro em log, determina se as informações de evento do contêiner são registradas no log de eventos. É atribuído um valor a essa propriedade a partir da estrutura DTSLoggingMode e ele é herdado por padrão do pai do contêiner. Se o contêiner for um pacote e não tiver pai, a propriedade usará o UseParentSetting, cujo padrão é Disabled.
Selecionando um provedor de log
Depois que a propriedade LoggingMode é definida como Enabled, um provedor de log é adicionado à coleção SelectedLogProviders do contêiner para concluir o processo. A coleção SelectedLogProviders está disponível no objeto LoggingOptions e contém os provedores de log selecionados para o contêiner. O método Add é chamado para criar um provedor e adicioná-lo à coleção. O método retorna o provedor de log que foi adicionado à coleção. Cada provedor tem parâmetros de configuração que são exclusivos desse provedor e essas propriedades são definidas através da propriedade ConfigString.
A tabela a seguir lista os provedores de log disponíveis, sua descrição e as informações sobre ConfigString.
Provedor |
Descrição |
Propriedade ConfigString |
---|---|---|
SQL Server Profiler |
Gera rastreamentos do SQL que podem ser capturados e exibidos no SQL Server Profiler. A extensão de nome de arquivo padrão desse provedor é .trc. |
Nenhuma configuração é necessária. |
SQL Server |
Escreve entradas de log de evento na tabela sysssislog em qualquer banco de dados SQL Server. |
O provedor SQL Server exige a especificação da conexão ao banco de dados e também o nome do banco de dados de destino. |
Arquivo de texto |
Grava entradas do log de eventos em arquivos de texto ASCII em formato CSV (valores separados por vírgula). A extensão de nome de arquivo padrão desse provedor é .log. |
O nome do gerenciador de conexões de um arquivo. |
Log de eventos do Windows |
Conecta-se ao log de eventos padrão do Windows no computador local no log do Aplicativo. |
Nenhuma configuração é necessária. |
Arquivo XML |
Grava entradas do log de eventos no arquivo em formato XML. A extensão padrão do nome de arquivo desse provedor é .xml. |
O nome do gerenciador de conexões de um arquivo. |
Os eventos são incluídos em ou excluídos do log de eventos através da definição das propriedades EventFilterKind e EventFilter do contêiner. A estrutura EventFilterKind contém dois valores, ExclusionFilter e InclusionFilter, que indicam se os eventos adicionados no EventFilter são incluídos no log de eventos. A propriedade EventFilter recebe uma matriz de cadeia de caracteres que contém os nomes dos eventos que são o assunto da filtragem.
O código a seguir habilita o registro em um pacote, adiciona o provedor de log dos arquivos de Texto à coleção SelectedLogProviders e especifica uma lista de eventos para incluir na saída de log.
Exemplo
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
|