2.5. Объектная модель SQL Server
Ядро SQL Server, SQL-DMO и средства управления образуют систему распределенного управления сервером, SQL-DMF (Distributed Management Framework). Эта система может быть дополнена утилитами, использующими SQL-DMO и расширяющими функциональность существующих средств управления сервером SQL. Схема взаимоотношения составляющих SQL-DMF приведена на рисунке 7.
Как видно из рисунка, слой SQL-DMO является интерфейсом высокого уровня к компонентам ядра SQL Server.
Рис. 7. Компоненты SQL-DMF и их взаимосвязь
SQL-DMO предоставляет приложению полный набор интерфейсов для управления сервером. Развернутая иерархическая схема объектной модели SQL-DMO приведена на рисунке 8. Можно заметить, что каждый из объектов является представлением какой-либо подсистемы или физического элемента SQL Server, будь то система защиты, устройство или таблица базы данных. Каждый объект обладает набором свойств и методов и может содержать подчиненные объекты и/или их коллекции. С помощью свойств и методов прикладная программа может манипулировать объектами и получать доступ к объектам, вложенным в данный.
Рис. 8. Структура SQL-DMO
Базовым объектом иерархии является объект SQL Server, все остальные объекты являются его потомками. Для осуществления доступа к любому из объектов-потомков необходимо предварительно получить экземпляр его родителя.
Следует обратить внимание на наличие в SQL-DMO коллекций и объектов уровня приложения (Collections и Application Objects).
Использование коллекций позволяет избежать непосредственного объявления включенных в них объектов. Использование итераторов и методов добавления и удаления значительно упрощает процедуры обработки наборов объектов одного типа.
Объекты уровня приложения используются для сохранения в программе результатов выполнения каких-либо операций над объектами сервера, и могут быть созданы независимо от базового объекта SQL Server.
Использование SQL-DMO
Для работы с SQL-DMO может применяться любое приложение, поддерживающее протокол OLE2, это могут быть средства разработки типа Visual C/C++, Visual Basic или Visual J++ либо офисные приложения, такие как Excel, Word или Access. Ниже приводится пример на VB, использующий SQL-DMO для обновления статистики оптимизатора запросов для всех таблиц на всех зарегистрированных в организации серверах:
Dim ServerGroupObject As New SQLOLE.ServerGroup
Dim RegisteredServerObject As New SQLOLE.RegisteredServer
Dim SQLServerObject As New SQLOLE.SQLServer
Dim DatabaseObject As New SQLOLE.Database
Dim TableObject As New SQLOLE.Table
For Each ServerGroupObject In ServerGroups
For Each RegisteredServerObject In ServerGroupObject.RegisteredServers
SQLServerObject.Connect RegisteredServerObject.Name, "sa", ""
For Each DatabaseObject In SQLServerObject.Databases
For Each TableObject In DatabaseObject.Tables
TableObject.UpdateStatistics
Next
Next
SQLServerObject.Close
Next
Next
2.6. Административная консоль SQL Server
Административная консоль SQL Enterprise Manager позволяет централизовано управлять любым количеством SQL серверов в сети организации. Для удобства управления серверы могут быть объединены в группы. Каждая группа может включать как сервера, так и вложенные группы. Информация об иерархии групп серверов хранится в registry компьютера, на котором впервые эта иерархия создана. Каждое административное место может использовать свою копию и, соответственно, версию иерархии, либо получать эту информации с другого компьютера. Каждый SQL сервер также представлен в виде иерархии объектов, что обеспечивает наглядность представления информации и упрощает навигацию по объектному дереву. Каждое подмножество дерева объектов может просматриваться независимо в дополнительных окнах. Создание нового окна производится методом "перетащи и оставь" на рабочий стол SQL Enterprise Manager. С каждым объектом ассоциирован набор действий, которые над ним можно выполнить, список их может быть выведен по нажатию правой кнопки мыши. Внешний вид административной консоли приведен на рисунке 6.9.
Использовать SQL Enterprise Manager могут как администраторы, так и зарегистрированные пользователи SQL Server для выполнения над объектами сервера разрешенных им действий. Перечислим основные возможности SQL Enterprise Manager:
- старт, пауза, останов сервера и его компонент, как-то: SQL Executive, SQL Mail и DTC;
- изменение текущих настроек SQL Server, как-то: используемая память, процессоры, максимальное число пользовательских сессий, предельное число блокировок, модель защиты и т.д.;
- управление устройствами, включая создание, удаление, модификацию, дублирование и т.п.;
- управление базами данных;
- управление объектами баз данных, от таблиц до пользовательских типов;
- управление пользователями, группами и их правами на объекты сервера;
- просмотр дерева зависимостей объектов и генерация сценариев SQL на создание этих объектов;
- резервное копирование и восстановление баз данных;
- слежение за текущей активностью пользовательских процессов на сервере с возможностью принудительного их завершения;
- настройка репликации данных;
- создание заданий SQL Executive, как непосредственно модифицируя таблицу заданий, так и при помощи мастера (wizard) обслуживания базы;
- перенос данных с одного сервера на другой.
Рис. 9. Консоль SQL Enterprise Manager
С панели инструментов могут быть вызваны утилиты ISQL/W и MS Query для выполнения предложений SQL и/или просмотра и модификации данных.
Кроме того существует возможность создания дополнительных панелей, содержащих ссылки на дополнительные программы, расширяющие функциональность SQL Enterprise Manager. При вызове этих программ, им могут быть переданы сведения о текущем состоянии дерева объектов (текущая группа, текущий сервер, текущий объект сервера).
2.7. SQL Executive, исполнение заданий
В обязанности SQL Executive входят исполнение заданий, хранящихся в специальной базе сервера msdb, слежение за возникновением событий и выполнение связанных с событием действий. Кроме того SQL Executive может быть настроен таким образом, чтобы следить за состоянием сервиса MSSQLServer и обеспечивать при необходимости его перезапуск. Дополнительно SQL Executive может стартовать процесс SQL Mail вместе с запуском сервера.
Контекст пользователя, в котором запускается SQL Executive имеет важное значение в случае исполнения заданий, связанных с доступом к ресурсам удаленных компьютеров, в частности это относится к процессу репликации. Поэтому во многих случаях необходимо настроить сервис на исполнение в контексте конкретного пользователя, а не локальной системы.
Для запуска заданий пользователей, не являющихся SA, предусмотрена возможность использования контекста специального пользователя с именем SQLExecutiveCmdExec. Этот пользователь создаётся (или пересоздаётся) с минимальным набором полномочий по нажатию кнопки Reset CmdExec Account. Пароль генерируется автоматически, но может быть принудительно сгенерирован заново по нажатию кнопки Reset CmdExec Password.
Управление заданиями
SQL Executive поддерживает следующие типы заданий:
- выполнение команды операционной системы, CmdExec;
- выполнение предложения Transact-SQL, TSQL;
- выполнение операций процесса репликации, LogReader, Sync и Distribution.
Задание создается либо из среды SQL Enterprise Manger, либо программно, в том числе при помощи хранимых процедур.
Задание может быть создано как:
- выполняемое по требованию, т.е. запускаемое пользователем вручную;
- исполняемое однократно в указанный день и час;
- исполняемое регулярно, с возможностью задать весьма гибкую схему исполнения и продолжительность периода, в течение которого задание будет действительно.
После того как задание создано, оно может быть принудительно запущено, изменено, удалено или помечено как временно неактивное. С фактом завершения задания, как успешного, так и нет, можно ассоциировать событие, регистрируемое в системном журнале NT и с которым можно связать предупреждение (alert).
Для задания можно указать, сколько раз и через какие интервалы времени будет произведена попытка перезапуска задания, если оно закончилось неудачно.
Для заданий репликации можно задать имя сервера и имя базы данных, на которых задание будет выполняться.
После запуска задание регистрируется в таблице активных. В любой момент времени список заданий можно просмотреть и при необходимости прервать исполнение досрочно. История исполнения заданий сохраняется в журнале, размер журнала и предельное число записей в нем для единичного задания можно установить. Внешний вид панели управления заданиями приведен на рисунке 10.
Рис. 10. Панель управления заданиями
Предупреждения и операторы
SQL Executive в процессе работы контролирует состояния системного журнала приложений Windows NT на предмет наличия записей, относящихся к компонентам SQL Server. Найденные ошибки или сообщения сопоставляются по номеру с зарегистрированными предупреждениями, хранящимися в таблице msdb, и при обнаружении совпадения выполняется либо ассоциированное с предупреждением задание, либо отправляется почтовое сообщение оператору, в чьи обязанности входит реагировать на такого рода события.
Предупреждения и операторы, создаются либо из SQL Enterprise Manager, либо посредством хранимых процедур. На рисунке 11 приведен внешний вид панели управления множествами предупреждений и операторов.
Рис. 11. Панель управления предупреждениями и операторами
Созданные предупреждения и операторы могут в дальнейшем быть модифицированы, удалены или. сделаны временно неактивными. Для каждого предупреждения можно задать способ извещения оператора - по почте или через пейджер, хотя в последнем случае сообщение все равно отправляется почтовому адресату, следовательно, почтовая система должна иметь в своем составе соответствующий шлюз.
На рисунках 13 и 12 приводятся примеры создания предупреждения и оператора, его получающего.
Рис. 12. Создание нового оператора
Рис. 13. Создание нового предупреждения
2.8. Шлюз в электронную почту SQL Mail
Шлюз в электронную почту SQL Mail является одной из уникальных базовых компонент SQL Server 6.5. SQL Mail позволяет из программ, исполняемых на сервере принимать, обрабатывать и посылать почтовые сообщения. SQL Mail состоит из набора хранимых процедур, выполняющихся в контексте пользователя, под которым стартует SQL Server. Поддерживается любая почтовая система, основанная на интерфейсе MAPI, в частности MS Exchange Server и MS Mail 3.X. Для нормального функционирования на компьютере должен быть настроен клиент соответствующей почтовой системы. В панели конфигурации SQL Mail указывается имя входа (название конфигурации) и пароль.
Рис. 14. Панель настройки SQL Mail
SQL Mail может настраиваться и управляться с консоли SQL Enterprise Manager, может быть настроен на автоматический старт вместе с SQL Server или запущен посредством хранимых процедур как часть прикладного процесса или как Transact-SQL задание SQL Executive.
Хранимые процедуры обработки сообщений
В состав SQL Mail входят следующие хранимые процедуры:
- xp_startmail
- расширенная хранимая процедура, выполняющая запуск сервиса SQL Mail и регистрацию в почтовой системе;
- xp_stopmail
- расширенная хранимая процедура, останавливающая выполнение операций с почтой;
- xp_sendmail
- расширенная хранимая процедура, выполняющая посылку сообщения адресатам; поддерживается посылка результатов запроса в виде вложения, режимы Carbon Copy и Blind Copy;
- xp_findnextmsg
- расширенная хранимая процедура; производит выборку из почтового ящика следующего сообщения; позволяет выбирать только непрочитанные сообщения; возвращает идентификатор сообщения, который может быть далее использован в xp_readmail или xp_deletemail;
- xp_readmail
- расширенная хранимая процедура; производит чтение сообщения из почтового ящика; за одну операцию считывается максимум 255 символов текста сообщения; для получения содержимого сообщений, длина текста которых более 255 символов, вызов функции выполняется несколько раз с указанием идентификатора и смещения от начала сообщения;
- xp_deletemail
- расширенная хранимая процедура; производит удаление сообщение по его идентификатору, полученному в результате вызова xp_findnetxmsg;
- sp_processmail
- системная хранимая процедура, выполняющая автоматическое чтение входящих сообщений, заголовок которых совпадает с указанной строкой текста. Тело сообщения трактуется как один SQL-запрос и результат его выполнения автоматически возвращается отправителю в виде вложения. Если в исходном сообщении присутствовали адресаты в поле CC:, результат рассылается также им. Обработанное сообщение удаляется из почтового ящика. Дополнительно в качестве параметров данной процедуре может быть заданы:
- разделитель полей в результатах запроса;
- расширение файла вложения для автоматической его ассоциации с приложением получателя (например расширение CSV ассоциируется с Excel);
- имя пользователя, в контексте которого будет исполняться запрос;
- имя базы данных, в контексте которой будет исполняться запрос.
Для всех хранимых процедур права на исполнение закреплены за SA, который на своё усмотрение назначает права конкретным пользователям.
Наличие процедур манипуляции сообщениями позволяет реализовать собственную схему приёма, разборки и отправки сообщений на сервере. Поскольку действия над сообщениями выполняются из расширенных процедур, их набор может быть увеличен, а логика работы надлежащим образом изменена путем создания оных на языках высокого уровня, таких как C/C++, с последующей регистрацией расширенных процедур на сервере.
Настройка для работы с Microsoft Exchange Server
Чтобы использовать SQL Mail с сервером Exchange необходимо выполнить следующие действия:
- создать на сервере Exchange почтовый ящик пользователя, под которым исполняется SQL Server;
- установить на компьютер, исполняющий SQL Server, клиентскую часть Exchange;
- для пользователя, под которым исполняется SQL Server, создать конфигурацию (например MySQLServer);
- в настройках SQL Mail в административной консоли указать название созданной конфигурации и пароль пользователя.
Важно обратить внимание на следующие моменты:
- автоматический старт сервиса SQL Mail ещё не означает автоматической обработки почты, чтобы входящая почта регулярно обрабатывалась, необходимо настроить SQL Executive на запуск задания T-SQL, содержащего вызов sp_processmai, в заданные моменты времени;
Назад | Содержание | Вперед