Вопрос 30: Автоматизация административных задач. Объекты автоматизации: задания, оповещения и операторы.
Microsoft SQL Server позволяет автоматизировать задачи администрирования. Для этого нужно определить прогнозируемые задачи администрирования и указать, при каких условиях будет выполняться каждая из задач. Использование автоматизированного администрирования для рутинных задач освобождает время на выполнение других административных функций.
Объекты автоматизации
Задания
Задание — это указанная последовательность действий, выполняемых агентом SQL Server . Используйте задания, чтобы определить задачу управления, которую можно выполнить однажды или неоднократно и контролировать на предмет успешного или неудачного выполнения. Задание может выполняться на одном локальном сервере или на нескольких удаленных серверах.
Каждое действие в задании является шагом задания. Например шаг задания может состоять из выполнения инструкции Transact-SQL , выполнения пакета служб Службы SSIS или выдачи команды серверу служб Analysis Services. Шагами задания управляют как частью задания.
Каждый шаг задания выполняется в указанном контексте безопасности. Для шагов заданий, использующих Transact-SQL, применяйте инструкцию EXECUTE AS, чтобы указать контекст безопасности для шага задания. Для других типов шагов заданий используйте учетную запись-посредник, чтобы указать контекст безопасности для шага задания.
Расписания
Расписание определяет время выполнения задания. Сразу несколько заданий могут выполняться по одному и тому же расписанию, а несколько расписаний могут применяться к одному и тому же заданию. Расписание может определить следующие условия для времени выполнения задания:
- При каждом запуске агента SQL Server.
- Каждый раз, когда использование ЦП компьютера будет достигать уровня, который определен как уровень простоя;
- Однажды, в указанные дату и время;
- Согласно повторяющемуся расписанию.
Оповещение
Предупреждение — это автоматический ответ на наступление указанного события. Например, событие может быть заданием, которое начинает выполняться, или системным ресурсом, достигшим указанного порогового значения. Пользователь определяет условия, при которых выдается предупреждение.
Предупреждение может быть реакцией на одно из следующих условий:
- SQL Server события
- SQL Server условия производительности;
- события инструментария управления Microsoft Windows (WMI) на компьютере, где работает агент SQL Server;
Предупреждение может выполнять следующие действия:
- Уведомить один или несколько операторов
- Осуществить запуск задания
Операторы
Оператор определяет контактные сведения о лице, ответственном за обслуживание одного или нескольких экземпляров SQL Server. В некоторых организациях обязанности оператора возлагаются на одно лицо. В организациях, использующих несколько серверов, обязанности оператора могут быть разделены между несколькими лицами. Оператор не обладает данными безопасности и не определяет субъекта безопасности.
SQL Server может уведомлять операторов о предупреждениях одним или несколькими способами из нижеследующих:
- электронная почта;
- пейджер (через электронную почту); [Удалят]
- команда net send. [Удалят]
Безопасность при администрировании агента SQL Server
Роли
SQL Server использует предопределенные роли базы данных SQLAgentUserRole, SQLAgentReaderRole и SQLAgentOperatorRole в базе данных msdb для управления доступом к агенту SQL Server для пользователей, не входящих в предопределенную роль сервера sysadmin . Помимо этих предопределенных ролей базы данных, подсистемы и учетные записи-посредники позволяют администраторам базы данных гарантировать, что каждый шаг задания выполняется с минимальными разрешениями, необходимыми для выполнения задачи.
Подсистемы
Подсистема — это предопределенный объект, который содержит функции, доступные шагу задания. Каждая учетная запись-посредник имеет доступ к одной или нескольким подсистемам. Подсистемы обеспечивают безопасность, поскольку разграничивают доступ учетных записей-посредников к функциям. Каждый шаг задания выполняется в контексте учетной записи-посредника, за исключением этапов задания Transact-SQL . На этапах задания Transact-SQL применяйте команду EXECUTE AS, чтобы задать контекст безопасности для владельца задания.
Учетные записи-посредники
SQL Server для управления контекстами безопасности использует учетные записи-посредники. Учетная запись-посредник может быть использована на нескольких шагах задания. Создавать учетные записи-посредники могут члены предопределенной роли сервера sysadmin.
Каждой учетной записи-посреднику соответствует учетная запись системы безопасности. и может быть связана с множеством подсистем и множеством имен входа. Учетная запись-посредник может применяться только для шагов задания, которые используют связанную с этой учетной записью-посредником подсистему. Чтобы создать шаг задания, использующий определенную учетную запись-посредник, владелец задания должен либо использовать связанное с ней имя входа, либо быть членом роли, имеющей неограниченный доступ к учетным записям-посредникам. Члены предопределенной роли сервера sysadmin имеют неограниченный доступ к учетным записям-посредникам. Члены ролей SQLAgentUserRole, SQLAgentReaderRoleи SQLAgentOperatorRole могут использовать только учетные записи-посредники, на которые им был предоставлен особый доступ. Каждому пользователю, входящему в одну из предопределенных ролей базы данных агента SQL Server , необходимо предоставить доступ к конкретным учетным записям-посредникам, чтобы пользователь мог создавать шаги задания, которые будут использовать эти учетные записи-посредники.
Примеры (в процедурах слишком много параметров, поэтому примеры)
-- Создать задачу
EXEC dbo.sp_add_job
@job_name = N'Weekly Sales Data Backup'; имя задачи
GO
-- Добавить к задаче шаг
EXEC sp_add_jobstep
@job_name = N'Weekly Sales Data Backup', -- имя задачи
@step_name = N'Set database to read only', -- имя шага задачи
@subsystem = N'TSQL', -- подсистема
@command = N'ALTER DATABASE SALES SET READ_ONLY', -- команда
@retry_attempts = 5, -- Количество повторных попыток использования в случае сбоя этого шага
@retry_interval = 5 ; -- Количество времени в минутах между повторными попытками
GO
-- Создать расписание
EXEC dbo.sp_add_schedule
@schedule_name = N'RunOnce', -- имя расписания
@freq_type = 1, -- значение, указывающее, когда должно выполняться задание (Однократно)
@active_start_time = 233000 ; -- время на любой день между active_start_date и active_end_date, чтобы начать выполнение задания.
USE msdb ;
GO
-- Применить расписание к задаче
EXEC sp_attach_schedule
@job_name = N'Weekly Sales Data Backup',
@schedule_name = N'RunOnce';
GO
-- Отправляет указанное задание на указанный сервер.
EXEC dbo.sp_add_jobserver
@job_name = N'Weekly Sales Data Backup';
GO
-- Процедура для создания оператора
EXEC dbo.sp_add_operator
@name = N'Dan Wilson', -- имя оператора
@enabled = 1, -- указывает текущее состояние оператора.
@email_address = N'danwi',
@pager_address = N'5551290AW@pager.Adventure-Works.com',
@weekday_pager_start_time = 080000, -- время, по истечении которого агент SQL Server отправляет уведомление по пейджеру указанному оператору в будним периоде с понедельника по пятницу.
@weekday_pager_end_time = 170000, -- время, по истечении которого служба SQLServerAgent больше не отправляет уведомление по пейджеру указанному оператору в будним периоде с понедельника по пятницу.
@pager_days = 62 ; -- это число, указывающее дни, когда оператор доступен для страниц (с учетом указанного времени начала или окончания).
GO