Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SQL2008_Administration.doc
Скачиваний:
90
Добавлен:
08.11.2018
Размер:
3.38 Mб
Скачать

8.1.4. Использование хранимых процедур трассировки

Функциональные возможности хранимых процедур трассировки практически идентичны возможностям профилировщика. Главное отличие заключается в том, что все настройки придется производить из кода TSQL.

Список хранимых процедур с краткой характеристикой:

  • sp_trace_create — позволяет настроить параметры сеанса трассировки;

  • sp_trace_setevent — позволяет выбрать для созданного сеанса трассировки требуемые события;

  • sp_trace_setfilter — позволяет настроить фильтр для сбора информации трассировки;

  • sp_trace_setstatus — позволяет запустить трассировку, остановить ее или удалить созданное хранимой процедурой sp_trace_create текущее определение сеанса;

  • sp_trace_generateevent — позволяет сгенерировать пользовательское событие, которое будет перехвачено в ходе трассировки.

8.1.5. Применение триггеров ddl

Триггеры DDL — используются для осуществления непрерывного мониторинга сервера и уведомления администратора.

При помощи триггеров DDL можно отслеживать выполнение различных операций, которые производятся с объектами БД с помощью команд DDL.

Создание триггера:

В самом простом варианте триггер DDL может выглядеть так:

CREATE TRIGGER DDLTrigger1 ON DATABASE FOR DROP_TABLE

AS

PRINT 'Таблица была удалена'

В теле триггера DDL можно использовать:

  • хранимые процедуры Database Mail, для отправки уведомлений по электронной почте.

  • функцию EVENTDATA()- для получения более подробной информации о сути происходящих событий. Например, чтобы получить информацию о конкретном запросе, который произвел удаление таблицы (с именем таблицы), можно использовать код вида

CREATE TRIGGER DDLTrigger1 ON DATABASE FOR DROP_TABLE AS

SELECT EVENTDATA().value(

'(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]','nvarchar(max)');

  • команды на откат транзакций, так как триггеры являются частью транзакции, которая их вызвала. Например, при помощи такого триггера можно вообще запретить удалять таблицы в данной базе данных:

CREATE TRIGGER DDLTrigger1 ON DATABASE FOR DROP_TABLE AS

PRINT 'Удалять таблицы в этой базе данных запрещено!';

ROLLBACK;

8.1.6. Другие средства мониторинга активности пользователей и уведомления о событиях

В SQL Server 2008 предусмотрены и другие возможности уведомления администратора о событиях, происходящих на сервере.

  1. Использование предупреждений SQL Server Agent. Предупреждения — очень простое в настройке, удобное и надежное средство. В основном оно предназначено для предупреждения администратора о системных проблемах сервера, но его можно использовать и для мониторинга действий пользователя. Для этого обычно используются пользовательские ошибки, которые генерируются при помощи оператора RAISEERROR. Сам этот оператор можно поместить в триггеры DDL или обычные триггеры.

  2. Использование постоянно работающего скрипта WMI, который работает с поставщиком WMI Provider for Server Events. Преимуществом такого подхода является то, что вы не зависите от работы сервера при отправке уведомлений. Для оповещения администратора можно использовать, например, средства объектной модели CDO, предназначенной для работы с электронной почтой.

  3. Применение уведомлений о событиях (Event Notifications). После настройки уведомлений о событиях информация об интересующих администратора событиях (к ним относятся выполнение команд DDL и события трассировки) передается в очередь программного модуля Service Broker в виде файлов XML.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]