Възможна опция:
Трябва да използвате Logging
функция в SSIS. Тя ви позволява да конфигурирате събитията, за които искате да заснемете съобщенията. Обикновено предпочитам дневника OnWarning
и OnError
за да следите всички предупреждения и съобщения за грешки, които се появяват в пакета. Имате различни доставчици за запазване на регистрационните данни. Предпочитам да използвам SQL Server, за да мога да направя заявка за информацията за регистриране.
Опции за регистриране, показани от SSIS 2012:
За да активирате влизането в пакет, трябва да щракнете върху пакета Business Intelligence Development Studio (BIDS)
ако разработвате пакети в SSIS 2005 - 2008 R2 или SQL Server Data Tools (SSDT)
ако разработвате пакети в SSIS 2012.
Щракнете върху SSIS
меню и след това щракнете върху Logging...
Ще видите диалоговия прозорец Конфигуриране на SSIS регистрационни файлове.
От лявата страна можете да проверите пакета или отделните задачи, за да регистрирате данните за събитието.
В Доставчици и регистрационни файлове можете да изберете подходящ доставчик, на който можете да запишете информацията от регистрационния файл. Екранната снимка по-долу показва, че информацията за събитието се улавя в база данни на SQL Server с помощта на мениджъра на връзки OLEDB_PracticeDB
.
В Подробности можете да изберете кои събития искате да заснемете. Екранната снимка по-долу показва, че улавям следните събития.
- OnError
- На информация
- OnTaskFailed
- OnWarning
Благодарение на @William Todd Salzman
за препоръчване на OnTaskFailed
събитие
Примерна илюстрация на пакет:
Да приемем, че имаме пакет с име SO_15004109.dtsx
с Задача за поток от данни и Скриптова задача . Data Flow Task е просто манекен без компоненти вътре.
Задачата на скрипта има следния код в главния метод за задействане на персонализирана информация, предупреждения и съобщения за грешка, така че да можем да наблюдаваме как се записва в източника на данни за регистриране. Кодът е написан за SSIS 2012, така че може да се наложи да го промените за SSIS 2005. Избрах VB.NET
вместо C#
защото сте маркирали този въпрос под sql-сървър-2005
и SSIS 2005 поддържа само VB.NET.
Код на скриптова задача във VB.NET за SSIS 2005 и по-нова версия.
#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
Ако изпълним пакета, той ще се провали, защото сме повдигнали грешка в Задачата за скрипт .
Ако отидете до източника на данни, където сте регистрирали грешките, ще забележите, че SSIS създава таблица за регистриране на информацията, ако сте избрали доставчик на логване на SQL Server. Таблицата по-долу изброява таблицата за регистриране, която SSIS създава в базата данни на SQL Server, избрана да бъде доставчик на регистрационни файлове.
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
Заявката по-долу беше изпълнена в базата данни за преглед на събитията, уловени от този примерен пакет. Ще забележите някои съобщения два пъти, защото събитията се регистрират за всеки контейнер и задача. Таблицата се нарича dbo.sysssislog
защото пакетът е създаден в SSIS 2012.
select id, event, source, message from dbo.sysssislog;
Личен опит с регистриране:
Постигнах доста добър успех само в прегледа на съобщенията за грешки при регистриране, за да разбера какво се е объркало. Отстраняването на грешки в пакети в производствена среда не е препоръчително според мен. За предпочитане е обаче записването на събития в журнала.
Когато работих в SSIS 2005 и 2008, създадох отчети, базирани на SSRS, които отправят запитвания към таблицата с регистрационни файлове, за да генерират ежедневен отчет за изпълнението на задания и да изпращат PDF прикачен файл на лица, представляващи интерес.
Нещата се подобриха в SSIS 2012, тъй като инструментът идва с вградени възможности за отчитане с Каталог на услугите за интеграция
който създава база данни с име SSIDB
.