Лекция 31: Автоматизация административных задач
В "Администрирование Microsoft SQL Server" мы рассмотрели некоторые из параметров автоматического конфигурирования и параметров баз данных, входящих в Microsoft SQL Server 2000 и помогающих снизить объем работы DBA по настройке баз данных. В этой лекции вы узнаете, как использовать некоторые дополнительные средства, предоставляемые в SQL Server, для автоматизации других административных задач с помощью службы SQLServerAgent. Служба SQLServerAgent позволяет автоматически выполнять определенные периодические задачи с базой данных и оповещать DBA или другое указанное лицо о том, что на сервере возникла какая-либо проблема или событие. Использование этих возможностей позволяет DBA обходиться без ручного и непрерывного мониторинга системы баз данных, чтобы определять, когда должны выполняться определенные задачи, что позволяет выделить время для более сложных вопросов по базам данных, таких как построение и настройка индексов, оптимизация запросов или планирование будущего роста.
Для автоматизации административных задач используются три основных средства: задания (jobs), оповещения (alerts) и операторы (operators). В этой лекции вы узнаете о службе SQLServerAgent и о том, как использовать эту службу для создания и использования заданий, оповещений и операторов. Вы также узнаете о журнале ошибок SQLServerAgent, который можете использовать для слежения за работой, выполняемой SQLServerAgent.
Служба SQLServerAgent
Агент SQL Server Agent запускается отдельно от SQL Server, как служба с именем SQLServerAgent. Эта служба включена в состав SQL Server 2000, но она должна запускаться отдельно – вручную или автоматически. (Об инструкциях по запуску SQLServerAgent см. "Работа со службами Microsoft SQL Server Services" .) После запуска этой службы вы можете переходить к определению любых нужных вам заданий, оповещений и операторов.
Задания
Задания – это административные задачи, которые определяются один раз и могут выполняться многократно. Вы можете запускать задание вручную, а также планировать запуск задания системой SQL Server в определенное время, в соответствии с регулярным расписанием или при возникновении оповещения. (Об оповещениях описаны далее в разделе "Оповещения".) Задания могут состоять из операторов Transact-SQL (T-SQL), команд Microsoft Windows NT или Microsoft Windows 2000, исполняемых программ или сценариев Microsoft ActiveX. Задания также автоматически создаются для вас, когда вы используете репликацию или создаете план обслуживания базы данных. Задание может состоять из одного или нескольких шагов, и каждый шаг может быть вызовом более сложного набора шагов, например обращением к хранимой процедуре. SQL Server автоматически следит за результатом выполнения заданий (успешное или неуспешное завершение); вы можете задавать оповещения, которые будут отправляться в каждом случае.
Задания могут выполняться локально на сервере, а в случае нескольких серверов в сети вы можете назначать один из серверов как главный сервер, а остальные серверы – как серверы-получатели. На главном сервере хранятся определения заданий для всех серверов, и этот сервер действует как центр обмена информацией для координирования работы всех заданий. Каждый сервер-получатель периодически подсоединяется к главному серверу, обновляет список своих заданий, если какие-либо задания изменились, загружает любые новые задания с главного сервера и затем отсоединяется для выполнения этих заданий. Когда сервер-получатель завершает какое-либо задание, он снова подсоединяется к главному серверу и сообщает о статусе его завершения.
Рассмотрим ситуацию, в которой вам может потребоваться создать задание. Предположим, что у вас имеется таблица базы данных, в которой ведется запись по каждой выполненной в банковской среде транзакции, такой как вклад денег на счет, снятие денег со счета и перевод (трансферт) денег. Каждая запись содержит колонку временной метки (timestamp),где указывается время выполнения транзакции. Эта таблица непрерывно растет, и ее нужно периодически сокращать. Для удаления строк из этой таблицы вы можете написать небольшую хранимую процедуру, в которой используется оператор DELETE для удаления строк, которые хранятся больше двух месяцев (в предположении, что банк должен хранить записи только два месяца). Затем вы можете создать задание для выполнения этой хранимой процедуры раз в неделю, например в ночь на воскресенье. Тем самым вы можете воспрепятствовать бесконечному росту данной таблицы. Это позволяет экономить пространство на диске и, кроме того, обычно повышает производительность. При меньшем количестве данных, среди которых выполняется по запросу, SQL Server может быстрее выполнить этот запрос. А теперь перейдем к подробностям создания заданий.
Создание задания
Чтобы определить задание, вы можете использовать Enterprise Manager, сценарии T-SQL, мастер создания заданий Create Job Wizard или SQL-Distributed Management Objects (SQL-DMO). Поскольку метод SQL-DMO связан с программированием, он выходит за рамки материала этой книги. В этом разделе вы узнаете о трех других методах создания заданий.