Программное включение ведения журнала
Ядро выполнения предоставляет коллекцию объектов LogProvider, которые позволяют перехватывать во время проверки и выполнения пакета специфические сведения, относящиеся к событию. Объекты LogProvider доступны для объектов DtsContainer, включая объекты TaskHost, Package, ForLoop и ForEachLoop. Ведение журналов включается для индивидуальных контейнеров или пакета в целом.
Существует несколько типов регистраторов, которые может использовать контейнер. Это повышает гибкость, позволяя создавать и сохранять сведения журнала во многих форматах. Прикрепление объекта-контейнера при ведении журнала выполняется в два этапа: сначала включается ведение журнала, а потом выбирается регистратор журнала. Свойства контейнера LoggingOptions и LoggingMode используются для указания записываемых в журнал событий и выбора регистратора.
Включение журнала
Свойство LoggingMode, имеющееся у каждого контейнера, который может осуществлять ведение журнала, определяет, записывается ли информация о событиях контейнера в журнал событий. Этому свойству назначается значение из структуры DTSLoggingMode. По умолчанию оно наследуется от родительского контейнера. Если контейнер является пакетом и, следовательно, не имеет родителя, свойство использует значение UseParentSetting, которое по умолчанию равно Disabled.
Выбор регистратора
После того как свойству LoggingMode присвоено значение Enabled, регистратор добавляется в коллекцию контейнера SelectedLogProviders для завершения процесса. Коллекция SelectedLogProviders доступна через объект LoggingOptions и содержит регистраторы, выбранные для данного контейнера. Метод Add вызывается для создания регистратора и добавления его в коллекцию. После этого метод возвращает регистратор, добавленный в коллекцию. Каждый регистратор имеет уникальные параметры настройки, которые устанавливаются с помощью свойства ConfigString.
В следующей таблице перечислены доступные регистраторы и приведено их описание и значения их свойства ConfigString.
Регистратор |
Описание |
Свойство ConfigString |
---|---|---|
Приложение SQL Server Profiler |
Создает SQL-трассировки, которые могут перехватываться и просматриваться в приложении SQL Server Profiler. По умолчанию для имени файла данного регистратора используется расширение TRC. |
Настройка не требуется. |
SQL Server |
Записывает записи журнала событий в таблицу sysssislog любой базы данных SQL Server. |
Регистратор SQL Server требует указания соединения с базой данных, а также имени базы данных-получателя. |
Текстовый файл |
Записывает записи журнала событий в текстовые файлы в ASCII-кодировке в формате CSV (с разделителями-запятыми). По умолчанию для имени файла для данного регистратора используется расширение LOG. |
Имя диспетчера соединения файлов. |
Журнал событий Windows |
Сохраняет журнальные записи в стандартном журнале событий Windows. |
Настройка не требуется. |
XML-файл |
Записывает записи журнала событий в файл в формате XML. По умолчанию для имени файла данного регистратора используется расширение XML. |
Имя диспетчера соединения файлов. |
События включаются в журнал событий или исключаются из него путем задания свойств контейнера EventFilterKind и EventFilter. Структура EventFilterKind содержит два значения, ExclusionFilter и InclusionFilter, которые указывают, включаются ли в журнал событий события, добавленные в фильтр EventFilter. После этого свойству EventFilter назначается строковый массив, содержащий имена событий, подлежащих фильтрации.
Следующий код включает ведение журнала для пакета, добавляет регистратор для текстовых файлов в коллекцию SelectedLogProviders и указывает список событий, которые должны включаться в выход журнала.
Образец
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
|
См. также