Получить подробный вывод о работе агента SQL

16

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

В истории работы говорится, что работа не удалась. Задание было вызвано пользователем foo \ bar. Последний шаг, который нужно было выполнить, - это шаг 1 (перестроить индекс).

В окне сведений отображаются несколько сообщений в следующем виде:

Executing query "ALTER INDEX [something] ON [a...".: 0% complete  End Progress  Progress: 2015-03-15 22:51:23.67     Source: Rebuild Index Task

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

toryan
источник
1
Я думаю, что @kin хорошо ответит на ваш первоначальный вопрос, но, на мой взгляд, это скорее проблема отладки. Если вы знаете индекс, по которому происходит сбой, я бы попытался определить причину сбоя этого конкретного индекса. Вы видите код SQL? Это в сохраненном процессе? Вы могли бы сделать несколько вещей, чтобы сузить это. Создать работу только с этим индексом. Запустите sql trace, пока выполняется это задание. Захватите sql и попытайтесь воспроизвести проблему.
Сэр, ругается много

Ответы:

18

Есть ли способ извлечь полный текст этих сообщений?

Это можно сделать двумя способами - перейдите на шаг работы и выберите вкладку «Дополнительно»:

а. Вывод в файл (<== Мой предпочтительный метод)

введите описание изображения здесь

б. «Записать в таблицу» и «Включить вывод шага в историю» (<== Вы должны урезать msdb..sysjobhistoryв долгосрочной перспективе, так как сообщения хранятся nvarchar(max)вместо nvarchar(1024))

введите описание изображения здесь

Для просмотра дополнительной зарегистрированной информации вам нужно использовать эту хранимую процедуру sp_help_jobsteplog или вы можете запросить msdb.dbo.sysjobstepslogsтаблицу напрямую.

Больше информации здесь

Кин Шах
источник
Ура, я попробую. просто чтобы вы знали, правильное имя этой таблицы - msdb.dbo.sysjobstepslogs («logs», а не «log»). Я пытался отредактировать ответ, но односимвольные изменения не допускаются.
Ториан
1
@toryan np. Я отредактировал свой ответ. Если вы считаете, что я ответил на ваш вопрос, пожалуйста, проголосуйте / отметьте как ответ.
Кин Шах
1
Я перезапустил задание, и на этот раз он выдал только одну ошибку, которую он записал в таблицу, как описано. К сожалению, текст запроса все еще урезан - есть ли способ получить больше информации?
Ториан
Я в этом сомневаюсь. Можете ли вы попробовать с методом выходного файла 1, как описано в моем ответе.
Кин Шах
1
@toryan У меня была та же самая проблема - регистрация все еще была урезана, даже с выводом в таблицу (метод (b) выше) и чтением sysjobstepslogs. Это было рекомендацией большинства онлайн-обсуждений этой проблемы. Но метод (а), вывод в файл, так и НЕ иметь эту проблему: текстовые файлы показывать мне все задания шага протоколирование, наконец , без усечения! (В моем случае мои рабочие шаги - это DTEXECкоманды, выполняющие пакеты служб SSIS.) Единственный недостаток: виден только последний запуск, если только он не добавлен в файл. Вместо добавления я предпочитаю жить с усечением на более ранних запусках.
Doug_Ivison
2

Вы можете получить полный текст:

  1. Перейти на работу
  2. Щелкните правой кнопкой мыши select properties
  3. Пройдите шаг работы
  4. Выберите stepи нажмите на editкнопку
  5. Выберите advanced. Здесь вы можете увидеть путь журнала.

Теперь просто следовать по пути.

Parassharma1990
источник