Вопрос 3. Автоматизация администрирования службы SQL Server Agent.


Добавил:DMT
Дата создания:30 декабря 2007, 19:15
Дата обновления:30 декабря 2007, 19:15
Просмотров:8853 последний сегодня, 10:51
Комментариев: 1
Вопрос 3. Автоматизация администрирования службы SQL Server Agent.
up

Комментарии для "Вопрос 3. Автоматизация администрирования службы SQL Server Agent."


Пользователь: litovets
Сообщений: 4
Статус: Незримый
Зарегистрирован:
8 января 2008, 14:36
Был:26 января 2008, 17:33
litovets
smsup
Дата: 8 января 2008, 20:18 Сообщение № 1
Служба SQLServer Agent реализует подсистему автоматизации SQL Server 2000. Основным назначением службы SQLServer Agent является запуск сконфигурированных заданий, анализ различных аспектов функционирования сервера и извещение операторов.

Таким образом, для работы подсистемы автоматизации необходим запуск службы SQLServerAgent. Если вы не хотите использовать подсистему автоматизации, то можно вообще не запускать указанную службу, что поможет снизить нагрузку на центральный процессор и сэкономить оперативную память. Может показаться, что если не сконфигурирован запуск ни одной административной задачи, то служба SQLServerAgent не будет занимать ресурсы операционной системы. Однако это не так. При запуске служба подключается к серверу (службе MSSQLServer) и постоянно сканирует таблицы базы данных MSDB, в которой хранится информация о заданиях, сконфигурированных для автоматического выполнения. В этом не трудно убедиться, если запустить утилиту SQL Server Profiler. Количество запросов, генерируемых службой SQLServerAgent, довольно заметно.
До сих пор мы рассматривали службу SQLServerAgent как механизм, позволяющий автоматически запускать различные задания по определенному расписанию. Однако функции этой службы гораздо шире. В частности, она может быть использована для автоматического решения проблем, возникающих в работе сервера. Например, в случае нехватки свободного пространства на диске, предназначенного для роста файлов баз данных, служба SQLServerAgent может запустить задание, удаляющее устаревшие резервные копии, временные и ВАК-файлы, выполняющее усечение баз данных, в которых имеется слишком много свободного пространства, или другие действия, которые помогут освободить дополнительное пространство на диске. Таким образом, проблема будет решена без участия администратора.
Рассмотрим, какие же компоненты лежат в основе подсистемы автоматизации SQL Server 2000:
• задания (jobs);
• оповещения (alerts);
• операторы (operators).
Задание (jobs) можно рассматривать как построенный пользователем логически законченный механизм, реализующий то или иное действие по администрированию SQL Server 2000. Физически задание представляется набором шагов (steps), которые выполняются последовательно. При этом выполнение любого шага задания можно поставить в зависимость от результатов исполнения предыдущего шага.
Например, один из шагов задания может использоваться для запуска утилиты bcp.exe, с помощью которой данные из таблицы базы данных будут копироваться в текстовый файл. Другой же шаг должен копировать подготовленный текстовый файл на сетевой ресурс. Но если создание файла по тем или иным причинам не удалось, то нет смысла пытаться копировать его. В этом случае можно указать, что копирование должно выполняться только в том случае, когда создание файла завершилось успешно. При неудаче можно отправить по электронной почте сообщение оператору (operator), который найдет причину неудачи создания файла и предпримет необходимые действия по ее устранению. Рассмотрим, какие типы шагов имеются в распоряжении пользователей при конфигурировании заданий службы SQLServerAgent:
• пакеты команд Transact-SQL, которые также могут включать вызовы хранимых процедур и функций;
• запуск утилит командной строки и приложений Win32;
• вызов агентов репликации;
• выполнение сценариев ActiveX, написанных на языке VBScript или Jscript.

Для создания задания и отдельных его шагов можно использовать следующие инструменты:
• специальные системные хранимые процедуры;
• средства Enterprise Manager;
• мастер Create Job Wizard.
С целью упрощения администрирования заданий в SQL Server введены категории заданий. Категории выступают в качестве групп, используемых для объединения заданий. При установке SQL Server создаются 14 стандартных категорий, которые вы можете дополнить собственными категориями.
Создав задание, вы можете определить любой график его исполнения по четко заданному расписанию. Возможна настройка регулярного выполнения задания через определенный промежуток времени. Естественно, не исключается и возможность однократного выполнения.
Каждое задание, как и все объекты SQL Server 2000, имеет своего владельца. Запуск или остановку задания, а также его модификацию может осуществлять только владелец или пользователь, являющийся участником стандартной роли сервера sysadmin.
Для хранения заданий, как и любой другой информации, предназначенной для автоматизации службой SQLServer Agent, используется системная база данных MSDB. Информация о заданиях сохраняется в таблице sysjobs. Информация же о конкретных шагах задания хранится в таблице sysjobsteps. Можно работать с заданиями не только средствами Enterpise Manager, но и напрямую обращаться к указанным системным таблицам. Например, в столбце command таблицы sysjobsteps хранится текст, представляющий совокупность команд конкретного шага.
Периодически служба SQLServerAgent проверяет системную таблицу sysjobs базы данных MSDB, чтобы определить, какие задания должны быть выполнены в ближайшее время.
Оповещения (alerts) представляют собой проявления реакции системы на наступление определенных событий. Администратор сам задает реакцию системы на наступление тех или иных событий. В качестве подобных событий чаще всего выступают различного рода нежелательные ситуации, приводящие к возникновению ошибок. Информация о созданных на сервере оповещениях сохраняется в системной таблице sysalerts базы данных MSDB.
При конфигурировании оповещений можно указывать две категории событий, наступление которых будет приводить к инициализации оповещения.
• Показания счетчиков производительности (performance counters). Наступлением события считается момент, когда показания одного из счетчиков SQL Server 2000 достигнет критической точки. При этом можно контролировать точное совпадение значения счетчика с эталонным значением, превышение его или уменьшение показателя счетчика ниже указанного значения.
• Сообщения об ошибках SQL Server 2000. В этом случае моментом наступления события считается генерирование в SQL Server 2000 сообщения об ошибке. При этом также имеется возможность настроить реакцию на ошибки, определяемые пользователями. Сама по себе активизация оповещения не представляет особого интереса.
Необходимо определить реакцию службы SQLServerAgent на инициализацию оповещения.
• Выполнение задания. В случае возникновения оповещения будет выполнено одно из сконфигурированных на сервере заданий. Это позволяет автоматизировать решение несложных проблем. Например, при возникновении определенной ошибки SQL Server 2000 может быть выполнено удаление промежуточных файлов. Довольно часто этот тип реакции используется для решения проблем с нехваткой свободного пространства на диске для роста баз данных. Если счетчик, отображающий объем свободного пространства, снизился до критичной отметки, то служба SQLServerAgent запустит задание, которое выполнит архивирование журнала транзакций с последующим его усечением. Дополнительно можно выполнить и усечение пользовательских баз данных, которые имеют много свободного пространства.
• Извещение оператора. Этот тип реакции используется при наступлении событий, которые не могут быть разрешены в автоматическом режиме и требуют вмешательства администратора. Например, если количество «мертвых» блокировок в системе становится критичным, то система отправит администратору соответствующее сообщение. Уже непосредственно администратор должен найти причину образования большого количества «мертвых» блокировок и предпринять действия к их устранению. Автоматическое решение подобных проблем вряд ли возможно. Это в первую очередь связано с их природой. Возникновение тех же «мертвых» блокировок может быть вызвано неверной логикой работы хранимых процедур. Очевидно, что внести исправления в хранимые процедуры, которые бы исправили логику, с помощью заданий практически невозможно.
• Перенаправление возникающих ошибок. При работе с этим типом реакции выполняется перенаправление сообщений об инициализации сообщений на один из серверов сети. Подобный подход используется, если в сети имеется множество серверов SQL Server 2000, но администрирование всех их выполняется одним и тем же администратором (или администраторами). Для упрощения наблюдения за работой всех серверов SQL Server 2000 можно переадресовывать информацию о критических ситуациях на один центральный сервер. В обычной ситуации каждый из серверов хранит информацию обо всех инициированных событиях в одной из таблиц системной базы данных MSDB. При перенаправлении ошибок вся эта информация дополнительно дублируется на указанном сервере. В случае выхода из строя одного из серверов сети часто бывает нужно проанализировать цепочку событий, которые привели к его выходу из строя. Однако получить доступ к информации, хранящейся на этом сервере, невозможно. В этом случае перенаправление информации на центральный сервер может оказаться весьма полезным.
Операторы (operators) — это люди, которые как раз и получают сообщения, посылаемые SQLServerAgent при активизации оповещений. Каждый из операторов имеет определенное имя, часы работы и для него должен быть указан, как минимум, один способ извещения. Для извещения операторов могут использоваться следующие механизмы:
• электронная почта;
• отправка сообщений на пейджер;
• использование утилиты командной строки net.exe с параметром SEND.
Операторы никак не связаны ни с учетными записями, ни с пользователями баз данных. Конечно, обычно оператором является человек, имеющий определенные права на сервере SQL Server 2000, для чего ему необходимо иметь соответствующую учетную запись (SQL Server или Windows NT). Однако при создании оператора связь между учетной записью и собственно оператором не указывается. Таким образом, оператором может являться абсолютно любой человек, даже не имеющий учетной записи.
Каждый из операторов может получать лишь определенные сообщения. Например, оператор резервного копирования может получать сообщения о неудачных попытках создания резервных копий. При получении таких сообщений он должен будет предпринять действия по устранению причин, приведших к невозможности создания резервной копии, после чего повторно инициировать процесс архивирования базы данных. Для выполнения этих действий пользователю должны быть предоставлены соответствующие права на сервере.