logo
SQL2008_Administration

Задание для самостоятельной работы 6.1 Применение заданий, предупреждений и операторов Задание:

  1. Создайте на сервере имя_вашего_сервера\SQL2008 пользовательское сообщение об ошибке со следующими параметрами:

номер: 50005;

уровень важности: 16;

текст сообщения: "Возникла ошибка";

с обязательной записью в журнал событий Windows.

  1. Создайте на своем сервере оператора с именем Operator_имя_вашего_компьютера. Все сообщения, которые отправляются этому оператору, должны передаваться на консоль вашего компьютера при помощи команды NET SEND.

Примечание

По умолчанию в Windows Server 2003 Служба Сообщений (Messenger Service), которая ответственна за прием таких сетевых сообщений, отключена. Для того, чтобы оператор смог получать сообщения по NET SEND, эту службу необходимо включить.

  1. Настройте на том же сервере предупреждение MyAlert. Это предупреждение должно перехватывать вашу пользовательскую ошибку и сообщать о ее возникновении оператору.

  2. Создайте задание SQL Server Agent, которое будет с интервалом в 5 минут генерировать данную пользовательскую ошибку. Называться это задание должно JobError50005. Убедитесь, что все созданные вами элементы автоматизации работают в соответствии с заданием, а затем отключите задание SQL Server Agent.

Решение:

Примечание

Большинство действий, которые описываются ниже, можно выполнить как при помощи команд Transact-SQL, так и средствами графического интерфейса SQL Server Management Studio. В этом решении будет приводиться только программный код Transact-SQL. Информацию о применении графического интерфейса можно найти в этой главе (раздел 8.1).

К пункту 1 — создание пользовательской ошибки:

Команда на создание пользовательской ошибки может выглядеть так:

USE master

GO

sp_addmessage @msgnum = 50005, @severity=16, @msgtext = 'Возникла ошибка', @with_log = 'TRUE'

К пункту 2 — создание оператора:

Программный код для создания оператора может быть таким (замените LONDON2 на имя вашего компьютера):

USE msdb

GO

EXEC sp_add_operator @name='Operator_LONDON2', @netsend_address='LONDON2'

К пункту 3 — создание предупреждения:

Соответствующий код может выглядеть так:

USE [msdb]

GO

EXEC msdb.dbo.sp_add_alert @name='MyAlert', @message_id=50005

GO

EXEC msdb.dbo.sp_add_notification @alert_name='MyAlert', @operator_name='Operator_LONDON2', @notification_method = 4

К пункту 4 — создание задания:

Соответствующий код может быть таким:

USE msdb

GO

-- Создаем пустое задание

EXEC msdb.dbo.sp_add_job @job_name='JobError50005'

GO

-- Определяем, на каком сервере оно будет выполняться

-- Не забудьте заменить 'LONDON\SQL2008' на имя вашего сервера

EXEC msdb.dbo.sp_add_jobserver @job_name='JobError50005', @server_name = 'LONDON2\SQL2008'

GO

-- Создаем единственный этап типа TSQL

EXEC msdb.dbo.sp_add_jobstep @job_name='JobError50005', @step_name='Step1', @subsystem='TSQL', @command='RAISERROR (50005, 16, 1)'

GO

-- Создаем "пятиминутное" расписание, которое начнет работать сегодня

DECLARE @thisDay As varchar(8)

SELECT @thisDay = CONVERT(varchar(8),GETDATE(), 112)

EXEC msdb.dbo.sp_add_schedule

@schedule_name='Schedule1',

@freq_type=4,

@freq_interval=1,

@freq_subday_type=4,

@freq_subday_interval=5,

@active_start_date = @thisDay

GO

-- Назначаем это расписание заданию

EXEC msdb.dbo.sp_attach_schedule @job_name = 'JobError50005', @schedule_name = 'Schedule1'

Если все сделано правильно, то каждые 5 минут на вашем компьютере будет появляться окно сообщения, аналогичное представленному на рис. 6.1.

Рис. 6.1. Пример отчета о выполнении плана обслуживания баз данных

Чтобы отключить задание, можно выполнить команду

USE msdb

GO

EXEC msdb.dbo.sp_update_job @job_name='JobError50005', @enabled=0