Введение в дисциплину «Безопасность систем баз данных». Теоретические основы построения реляционных баз данных. Верификация баз данных и проведение аудита в СБД. Распределенные базы данных, страница 24

Оповещение операторов о работе сервера, в том числе и об ошибках при выполнении заданий, происходит благодаря тому, что в системной БД Msdb хранятся сведения об операторах СУБД. Оператор – это служащий, отвечающий за поддержание сервера в рабочем состоянии. Служба SQLServerAgent может рассылать сообщения по электронной почте, отправлять их на пейджер оператора, вызывать команду net send для рассылки по локальной сети. Для этого в БД Msdb хранятся все необходимые сведения об операторах – их имена, email-адреса, дата и время отправки последнего сообщения и другая информация.

Третья функция SQLServerAgent – обработка событий. Любые события на сервере SQL Server могут отражаться в журнале аудита Windows. Периодически просматривая его, SQLServerAgent ищет не любые события, а только те, что были заранее отмечены оператором, как критические для данного сервера. Если найти такие события удается, то реакция службы SQLServerAgent может быть следующая:

·  отправка сообщения оператору;

·  автоматическое выполнение некоторого задания;

·  перенаправление ошибок – копирование сообщений из журнала приложения локального сервера в журнал приложений удаленного сервера; просмотрев журнал приложений на удаленном компьютере, администратор получает полное представление о работе всех серверов сети, которые он контролирует.

Более подробно об использовании службы SQLServerAgent рассказано в описании лабораторной работы №8.

Служба SQLServerAgent является зависимой по отношению к MSSQLServer, соединяется с ней наподобие обычного клиента, но обладает более широкими правами, чем обычный клиент. При выполнении большей части операций SQLServerAgent использует специальные хранимые процедуры базы данных Msdb; их запуск возлагается на службу MSSQLServer.

Служба msftesql

Позволяет выполнять полнотекстовый поиск в таблицах БД. Технология полнотекстового поиска позволяет находить не только слова и фразы, идентичные указанным, но и близкие к ним по смыслу и написанию. Полнотекстовый поиск в базах данных SQL Server выполняется по полям типа char, varchar, text, nchar, nvarchar, ntext. При полнотекстовом поиске используются полнотекстовые индексы – словари, в которых указаны ключевые слова и конкретные строки таблиц, в которых они расположены. Индексируемые таблицы и столбцы должны быть заранее выбраны разработчиком (администратором) БД. Физически полнотекстовые индексы хранятся в виде файлов, регистрируемых в отдельной папке – полнотекстовом каталоге, который также создается администратором СУБД.

Основная SQL-функция полнотекстового поиска – функция CONTAINS(), используемая в секции WHERE оператора SELECT. Например:

select * from MyTable where Contains(TextData, '"продукт"')

По этому запросу будут выданы строки таблицы MyTable, в которых поле TextData будет содержать слово «продукт». Более сложный пример использования данной функции – с определением словоформ:

select * from MyTable where Contains (TextData, 'FORMSOF (INFLECTIONAL, "программа" )')

Нетрудно видеть, что поиск словоформ задается функцией FORMSOF. Ее первый параметр определяет лингвистический принцип поиска. Значение INFLECTIONAL предписывает искать единственное и множественное число, а также глагольные формы слова «программа» в столбце TextData.

Подробное описание функции Contains() и других средств поддержки работы с полнотекстовыми индексами можно найти в документации MSDN Library 2005.

Служба MSDTC

Полное наименование службы – Microsoft Distributed Transaction Coordinator, Координатор распределенных транзакций. Данная служба отвечает за выполнение распределенных запросов, т. е. запросов, которые обращаются сразу к нескольким источникам информации (к разным БД и даже к разным СУБД) через данный SQL-сервер. Служба MSDTC разбивает запрос на подзапросы таким образом, чтобы каждый подзапрос не являлся распределенным запросом и мог быть выполнен на отдельном сервере. Затем служба MSDTC отправляет подзапросы связанным с нею серверам СУБД на выполнение, принимает от них сигналы об успешном или неудачном завершении, на основе которых формирует код завершения распределенного запроса в целом. Успешное выполнение имеет место в том случае, если все подзапросы были выполнены без ошибок. Результат завершения возвращается клиенту через службу MSSQLServer.