Как проверить результаты работы пакета служб SSIS после завершения его выполнения? - PullRequest
12 голосов
/ 25 мая 2011

У меня есть пакет служб SSIS, который импортирует данные в базу данных SQL Server 2008. Я настроил задание расписания в агенте SQL Server для запуска этого пакета. Когда я проверял историю, я мог видеть только, успешно ли выполнено задание. Я не мог видеть другие сообщения, кроме этого.

Я хотел бы знать, сколько записей импортируется при каждом выполнении задания. Как я могу это контролировать? Нужно ли использовать дополнительные компоненты в пакете служб SSIS или настроить некоторые конфигурации в настройке заданий агента SQL Server?

Я нашел некоторые средства ведения журналов в программе настройки работы агента SQL Server, но я не уверен, что они могут соответствовать моим требованиям.

Ответы [ 5 ]

21 голосов
/ 25 мая 2011

Если вы просто заинтересованы в знании обрабатываемых столбцов и не интересуетесь информацией для дальнейшего использования, одним из возможных вариантов является использование функции ведения журнала служб SSIS. Вот как это работает для задач потока данных.

  1. Нажмите на пакет служб SSIS.
  2. В меню выберите SSIS -> Ведение журнала ...
  3. В диалоговом окне «Настроить Журналы служб SSIS: » выберите тип поставщика и нажмите «Добавить». Я выбрал SQL Server для этого примера. Установите флажок Имя и укажите источник данных в столбце Конфигурация. Здесь SQLServer - это имя диспетчера соединений. Служба SSIS создаст таблицу с именем dbo.sysssislog и хранимую процедуру dbo.sp_ssis_addlogentry в выбранной вами базе данных. Смотрите скриншот # 1 ниже.
  4. Если вам нужно обработать строки, установите флажок OnInformation. Здесь, в примере, пакет успешно выполнен, поэтому записи журнала были найдены в разделе OnInformation. Возможно, вам придется настроить этот выбор событий в соответствии с вашими требованиями. Смотрите скриншот # 2 ниже.
  5. Вот пример выполнения пакета в задаче потока данных. Смотрите скриншот # 3 ниже.
  6. Вот пример выходных данных таблицы журнала dbo.sysssislog. Я только отображал столбцы id и message . В таблице много других столбцов. В запросе я фильтрую выходные данные только для пакета с именем « Package1 » и события « OnInformation ». Вы можете заметить, что записи с идентификаторами 7, 14 и 15 содержат обработанные строки. Смотрите скриншот # 4 ниже.

Надеюсь, это поможет.

Скриншот # 1 :

Logging

Снимок экрана # 2 :

Events

Снимок экрана # 3 :

Execution

Снимок экрана # 4 :

data

1 голос
/ 20 марта 2018

используйте приведенную ниже процедуру для получения ошибок служб SSIS с идентификатором выполнения

CREATE PROCEDURE [dbo].[get_ssis_status] @EXECUTION_ID INT\n
AS
BEGIN
  SELECT o.operation_id EXECUTION_ID
    ,convert(datetimeoffset,OM.message_time,109) TIME
    ,D.message_source_desc ERROR_SOURCE
    ,OM.message ERROR_MESSAGE
    ,CASE ex.STATUS
        WHEN 4 THEN 'Package Failed'
        WHEN 7 THEN CASE EM.message_type 
            WHEN 120 THEN 'package failed' 
            WHEN 130 THEN 'package failed' ELSE 'Package Succeed'END
        END AS STATUS
FROM SSISDB.CATALOG.operation_messages AS OM
INNER JOIN SSISDB.CATALOG.operations AS O ON O.operation_id = OM.operation_id
INNER JOIN SSISDB.CATALOG.executions AS EX ON o.operation_id = ex.execution_id
INNER JOIN (VALUES (- 1,'Unknown'),(120,'Error'),(110,'Warning'),(130,'TaskFailed')) EM(message_type, message_desc) ON EM.message_type = OM.message_type
INNER JOIN (VALUES 
 (10,'Entry APIs, such as T-SQL and CLR Stored procedures')
,(20,'External process used to run package (ISServerExec.exe)')
,(30,'Package-level objects')
,(40,'Control Flow tasks')
,(50,'Control Flow containers')
,(60,'Data Flow task')
    ) D(message_source_type, message_source_desc) ON D.message_source_type = OM.message_source_type
WHERE ex.execution_id = @EXECUTION_ID
AND OM.message_type IN (120,130,-1);
END
1 голос
/ 23 сентября 2016

Если вы развернули пакет в каталоге служб Integration Services (а не загрузили его из файловой системы), вы можете легко получить подробные отчеты.

Откройте узел каталога в SQL Server Management Studio, щелкните правой кнопкой мыши имя пакета, выберите Отчеты | Стандартные отчеты | Все Выполнения и просмотреть подробную информацию о каждом шаге задания и его подкомпонентах, включая импортированные записи.

1 голос
/ 10 марта 2016

Вот другой подход, когда в истории заданий SQL Server не отображаются выходные данные из пакетов служб SSIS: используйте командные строки DTEXEC.

(Upside: этот подход помещает выходные данные работы туда, где кто-либо другой, поддерживающий ее, ожидал бы, что найдет ее: в истории работы.
Недостаток для больших пакетов: если у вас длинный пакет служб SSIS, с большим количеством задач или компонентов и большим количеством выходных данных, то история заданий будет разбивать выходные данные пакета на множество строк истории заданий, делая подход в предыдущем ответе - ведение журнала к столу - легче читать.)

Чтобы отобразить вывод пакета служб SSIS в истории просмотра задания:
(1) Измените шаги задания с типа «Пакет служб интеграции с SQL Server» на «Операционная система (CmdExec)»,
(2) Используйте командные строки DTEXEC, чтобы выполнить пакеты.

Пример командной строки:

DTExec /DTS "\MSDB\myPkgName" /DECRYPT pkgPass /MAXCONCURRENT " -1 " /CHECKPOINTING OFF 

Обратите внимание, что если для пакета служб SSIS требуется выполнение 32-BIT (например, true для экспорта в Excel), используйте утилиту DTEXEC в "Program Files (x86)", полностью определив ее. Пример, где приложение SQL Server было установлено на диске «E:» и где используется SQL Server 2014:

"E:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\DTExec.exe" /DTS "\MSDB\myPkgName" /DECRYPT pkgPass /MAXCONCURRENT " -1 " /CHECKPOINTING OFF

Если ваши пакеты служб SSIS находятся в файловой системе (как файлы «.dtsx»), то замените «/ DTS» на «/ FILE».

Если ваши пакеты служб SSIS были помещены в SSISDB (с использованием «модели развертывания проекта», которая доступна начиная с SQL Server 2012 вместо более старой «модели развертывания пакетов»), то замените «/ DTS» на «/ ISSERVER». ».

Затем перейдите на страницу «Дополнительно» шага задания и убедитесь, что в поле «Включить вывод шага в историю» установлен флажок.

Наконец, рассмотрим шаг вашего задания «Запуск от имени»: если на этапах задания «Запуск от имени» уже был задан прокси-сервер, то на этапах задания типа «Пакет служб интеграции SQL Server» вы уже сделали этот прокси активным для подсистема «Пакет служб интеграции с SQL Server». Теперь для выполнения командных строк, подобных описанным выше, проверьте свойства прокси-сервера и убедитесь, что он также активен для подсистемы «Операционная система (CmdExec)».

Ссылка MSDN: Вывод служб SSIS в истории агента Sql

0 голосов
/ 25 мая 2011

Если вы вставляете строки с помощью задачи «Выполнение SQL», вы можете получить количество записей с помощью переменной @@ ROWCOUNT.Затем вы должны написать это где-нибудь, чтобы потом прочитать для отчета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...