SSIS - лучшие практики при зависании SSIS - PullRequest
0 голосов
/ 08 января 2019

Прошлой ночью мой SSIS завис. Я не совсем уверен, почему. Этим утром я определил, какой пакет завис на основе результатов. Я смотрю на sp_who2, но не вижу никаких процессов, которые выполняются под пользователем, запускающим задания.
Мне интересно, что я должен делать, когда мой SSIS просто зависает. В настоящее время он все еще работает, но, похоже, ничего не работает.

1 Ответ

0 голосов
/ 08 января 2019

Начните с развертывания пакета в SSISDB и запуска его оттуда. Если вы еще не установили каталог SSISDB, дополнительную информацию об этом можно найти здесь . После этого включите вход в систему пакета и просмотрите результаты, в частности этапы, на которых пакет зависает. При этом ищите событие PipelineComponentTime, которое указывает, как долго каждый компонент занимал определенную фазу. Пара фаз, которые могут представлять интерес, это фаза ProcessInput, в которой обрабатываются входящие записи, а также PrimeOutput, в которой данные помещаются в буферы и отправляются дальше по потоку данных. Обзор включения ведения журнала выглядит следующим образом.

  • Щелкните правой кнопкой мыши в любом месте потока управления и нажмите Logging...
  • Установите флажок рядом с пакетом в поле «Контейнеры», чтобы включить ведение журнала. Выберите, где вы хотите сохранить записи журнала, используя поле Тип провайдера. Если вы используете поставщик журналов служб SSIS для SQL Server, таблица SYSSSISLOG будет создана в базе данных, которая установлена ​​в качестве Начального каталога в используемом диспетчере соединений OLE DB. В области сведений выберите события, которые вы будете регистрировать. После выбора нажмите кнопку Advanced>>, чтобы установить поля, которые будут регистрироваться.
  • Далее проверьте, для каких компонентов вы хотите включить ведение журнала. Вы можете сделать это для любых компонентов, которые, как вы подозреваете или подтвердили, сталкиваются с задержками. Если в каких-либо задачах потока данных включено ведение журнала, упомянутое ранее событие PipelineComponentTime будет доступно в окне сведений на них.
  • Для мониторинга пакета из каталога SSIS используйте DMV SSISDB. При этом убедитесь, что уровень ведения журнала установлен как минимум на базовый уровень при выполнении пакета. Есть несколько способов сделать это, самый простой из которых, вероятно, из GUI. Перед выполнением пакета в окне «Выполнение пакета» в SSISDB поле «Уровень ведения журнала» можно найти на вкладке «Дополнительно».
  • Если пакет развернут в SSISDB и запущен как задание в агенте SQL, ведение журнала можно настроить на шаге задания. Откройте окно Свойства шага задания, перейдите на вкладку Конфигурация, а затем на вкладку Дополнительно, где вы увидите поле Уровень ведения журнала.
  • В SSISDB имеется множество DMV, в которых хранится подробная информация о конфигурации и выполнении пакета. catalog.event_messages, executable_statistics и catalog.operation_messages - некоторые из них, которые будут полезны. Для получения более подробной информации о компонентах и ​​о том, где происходят задержки, я бы порекомендовал catalog.execution_component_phases, для чего потребуется уровень ведения журнала производительности или подробный.
  • Если производительность варьируется в зависимости от того, какие параметры используются в пакете, используйте execution_id из экземпляров более медленных выполнений, чтобы запросить catalog.execution_parameter_values DMV, чтобы увидеть, какие параметры установлены в этих исполнениях.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...