Первые три уровня событий DDL-триггеров
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 

События уровня 1 События уровня 2 События уровня 3

DDL_EVENTS

DDL_DATABASE_LEVEL_EVENTS

DDL_ASSEMBLY_EVENTS
DDL_DATABASE_SECURITY_EVENTS
DDL_DEFAULT_EVENTS
DDL_EVENT_NOTIFICATION_EVENTS
DDL_EXTENDED_PROPERTY_EVENTS
DDL_FULLTEXT_CATALOG_EVENTS
DDL_FULLTEXT_STOPLIST_EVENTS
DDL_FUNCTION _EVENTS
DDL_PRTITION_EVENTS
DDL_PLAN_GUIDE_EVENTS
DDL_PROCEDURE_EVENTS
DDL_RULE_EVENTS
DDL_SSB_EVENTS
DDL_SYNONYM_EVENTS
DDL_TABLE_VIEW_EVENTS
DDL_TYPE_EVENTS
RENAME
ALTER_INSTANCE

DDL_SERVER_LEVEL_EVENTS

DLL_DATABASE_EVENTS
DLL_ENDPOINTS_LEVEL
DLL_EVENT_SESSION_EVENTS
DLL_MESSAGE_EVENTS
DLL_RESOURCE_GOVERNOR_LEVEL
 

 

На втором уровне иерархии (табл. 13.4) осуществляется разделение на события уровня сервера (DDL_SERVER_LEVEL_EVENTS) и события уровня базы данных (DDL_DATABASE_LEVEL_EVENTS).

В рамках любого DDL-триггера доступна для применения встроенная функция EVENTDATA, с помощью которой можно получить исчерпывающую информацию о событии, активизировавшем триггер. Результатом работы функции является значение XML-типа.

 

DDL-триггеры уровня сервера. Триггеры уровня сервера предназначаются, прежде всего, для отслеживания настроек сервера, а также для обеспечения его безопасности. Условно триггеры уровня сервера можно разбить на две группы: триггеры для обработки событий, связанных с созданием, изменением или удалением объектов сервера, и триггеры, обрабатывающие событие подключения к серверу.

Для хранения результатов выполнения функции EVENTDATA создадим в системной БД MASTER таблицу с именем SERVER_EVENT_LOG (рис. 13.91).

 

 

Рис. 13.91. Таблица для хранения результатов выполнения

функции EVENTDATA

 

Второй столбец таблицы SERVER_EVENT_LOG (рис. 13.91) предназначен для хранения данных в формате XML. Более подробно о типе данных XML и принципах работы с ним поясняется в 14 главе этого пособия.

На рис. 13.92 приведен пример создания DLL-триггера с именем CREATE_DB уровня сервера (ALLSERVER), предназначенного для обработки события с именем CREATE_DATABASE. Событие CREATE_DATABASE находится на четвертом уровне иерархии (под DLL_DATABASE_EVENTS) и возникает при выполнении DLL-оператора CREATE DATABАSE, предназначенного для создания новой БД.

 

 

Рис. 13.92. Создание триггера уровня сервера для обработки события
 CREATE_DATABASE

 

Триггер с именем DROP_DB (13.93) реагирует на выполнение оператора DROP DATABASE (удаление БД).

 

Рис. 13.93. Создание триггера уровня сервера для обработки события DROP_DATABASE

 

Триггеры CREATE_DB и DROP_DB (рис. 13.92, 13.93) содержат похожий код, выполнение которого приводит к выдаче сообщения в стандартный поток вывода (оператор PRINT) и добавлению строки (оператор INSERT) в таблицу SERVER_EVENT_LOG. В столбец с именем EP записывается результат выполнения функции EVENTDATA.

При выполнении операторов CREATE DATABASE и DROP DATABASE (рис. 13.94, 13.95) в результате выполнения триггеров в стандартный выходной поток выводятся соответствующие сообщения и добавляются строки в таблицу SERVER_EVENT_LOG (рис. 13.96).

 

 

Рис. 13.94. Сообщение, формируемое в результате выполнения триггера CREATE_ DB (рис. 13.92) при создании БД

 

Рис. 13.95. Сообщение, формируемое в результате выполнения триггера DROP_ DB (рис.13.92) при удалении БД

 

 

Рис. 13.96. Добавление двух строк в таблицу SERVER_ EVENT_ LOG
 
в результате выполнения триггеров CREATE_ DB и DROP_ DB

 

На рис. 13.97, 13.98 демонстрируется содержимое столбца c именем EP таблицы SERVER_EVENT_LOG. Значением столбца является XML-структура, сформированная функцией EVENTDATA при выполнении триггеров CREATE_DB и DROP_DB (рис. 13.92, 13.93).

 

 

Рис. 13.97. Результат выполнения функции EVENTDATA в триггере
 CREATE_ DB (рис.13. 92) при выполнении оператора CREATE DATABASE
 (рис. 13.94)

 

 

 

Рис. 13.98. Результат выполнения функции EVENTDATA в триггере

DROP_ DB (рис. 13.93) при выполнении оператора DROP DATABASE (рис. 13.95)

 

 

В табл. 13.5 приведено описание XML-элементов, составляющих результат выполнения функции EVENTDATA.

 

 

Таблица 13.4





Дата: 2019-02-25, просмотров: 208.