Назад | Перейти на главную страницу

Есть ли запрос, чтобы проверить, какие планы обслуживания включены в SQL Server 2008?

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

Возможно, я нашел способ заставить это работать в своей среде. Наши планы обслуживания были созданы с использованием системы перетаскивания, которую использует SQL Server 2008, поэтому это может не работать так же, если вы не используете эту систему. Вот запрос, который я использовал:

ВЫБЕРИТЕ DISTINCT line3 ИЗ sysmaintplan_logdetail
ГДЕ line1 КАК "% Shrink%" ИЛИ line2 КАК "% Shrink%"

Я понимаю, что столбцы line1-3 могут показаться немного запутанными, поэтому я попытаюсь объяснить. В таблице sysmaintplan_logdetail есть столбец для строк 1–5. Эти 5 строк, кажется, описывают, что происходит с конкретной задачей в плане обслуживания. Они не всегда полны, и я не уверен, что SQL Server когда-либо понадобится создать больше, чем 5 строк, но это то, что было для меня.

Когда я просмотрел записи в моей таблице sysmaintplan_logdetail, я заметил, что обе строки 1 и 2 содержат слово shrink каждый раз, когда в плане обслуживания выполнялась операция сжатия. Конкретные строки были:

line1 - Сжать задачу базы данных (ИМЯ СЕРВЕРА)
line2 - Сжать базу данных при подключении к локальному серверу
line3 - Содержит имя базы данных

Я не могу гарантировать, что эти записи будут в том же месте или даже в той же строке на другом сервере, но кажется возможным создать простой запрос с использованием sysmaintplan_logdetail после просмотра его в течение нескольких минут. Надеюсь, это поможет и кому-то другому.

Думаю, вот что вам нужно. Джейми Томпсон опубликовал информацию о том, как извлекать информацию из пакетов SSIS. Планы обслуживания создаются в виде пакетов SSIS, и вы можете использовать информацию в этом сообщении для достижения желаемого. Удачи!

http://sqlblog.com/blogs/jamie_thomson/archive/2009/10/18/collecting-information-about-your-ssis-packages-ssis-nugget.aspx

В таблице msdb.sysjobsteps есть столбец с именем command. Этот столбец команд содержит оператор SQL, который должен запускаться на определенном этапе задания. Следующий запрос должен определить, сжимает ли база данных какой-либо из шагов задания:

ВЫБЕРИТЕ имя
ОТ sysjobs INNER JOIN sysjobsteps
ВКЛ sysjobs.job_id = sysjobsteps.job_id
Команда WHERE LIKE '% Shrink%'

Это должно определить, есть ли на сервере какие-либо задания, использующие сжатие, и предоставить вам имя задания.