Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Можете ли да наблюдавате изпълнението на SSIS пакет в BIDS, докато се изпълнява на сървъра?

Възможна опция:

Трябва да използвате 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# защото сте маркирали този въпрос под и 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 .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Преобразуване на низ с израз в десетичен

  2. съхранена процедура в SQL CLR

  3. Получаване на информация за ограниченията по подразбиране

  4. Актуализирайте един ред с t-sql

  5. Как мога да заредя голям плосък файл в таблица на база данни с помощта на SSIS?