Общие сведения об SMO
Объекты SMO SQL Server – это объекты, созданные для управления MicrosoftSQL Server программными средствами. Объекты SMO можно использовать для создания специализированных приложений управления SQL Server. Хотя среда SQL Server Management Studio является мощным и универсальным приложением для управления SQL Server, иногда удобнее работать с приложением SMO.
К примеру, для удовлетворения потребностей новых пользователей, а также с целью сокращения издержек на подготовку персонала может возникнуть необходимость упрощения пользовательских приложений, выполняющих задачи управления SQL Server. Может возникнуть необходимость в создании специализированных баз данных SQL Server или в создании приложения для формирования индексов и наблюдения за их эффективностью. Кроме того, приложение SMO можно использовать для бесшовной интеграции аппаратных или программных компонентов от независимых поставщиков в приложение управления базами данных.
Модель объектов SMO расширяет и замещает модель объектов DMO (SQL-DMO). По сравнению с моделью объектов SQL-DMO модель SMO повышает производительность, управляемость и облегчает использование. Почти все функциональные возможности SQL-DMO включены в модель объектов SMO, и, кроме того, в этой модели реализованы различные новые классы, поддерживающие новые возможности в SQL Server. Модель объектов интуитивно понятна: там, где это возможно, в ней применяется терминология SQL-DMO, что дает возможность использовать имеющиеся навыки.
Поскольку модель объектов SMO совместима с SQL Server 2000, SQL Server 2005 и SQL Server 2008, работать в среде с продуктами различных версий совсем не сложно.
Важно! |
---|
Модель объектов SMO не поддерживает уровни совместимости 60, 65 или 70. Те, кто работает с базой данных, настроенной на уровни совместимости 60, 65 или 70, не имеют возможности управлять этой базой данных с помощью модели SMO. |
К новым возможностям, реализованным в модели объектов SMO, относятся следующие.
Модель кэшированных объектов и оптимизированная процедура создания экземпляров объектов. Объекты загружаются только тогда, когда на них производится ссылка. Свойства объекта загружаются при создании объекта лишь частично. Остальные объекты и свойства загружаются, когда на них делается прямая ссылка.
Пакетное выполнение инструкций Transact-SQL. Инструкции передаются пакетами для повышения производительности сети.
Сбор инструкций Transact-SQL. Позволяет собирать любую операцию в сценарий. В Management Studio эта возможность используется для преобразования операций в сценарии вместо непосредственного их выполнения.
Управление службами SQL Server с помощью поставщика WMI. Службы SQL Server можно запускать, останавливать и приостанавливать программным путем.
Поддержка сложных сценариев. Можно формировать сценарии Transact-SQL для повторного создания объектов SQL Server, которые описывают связи с другими объектами экземпляра SQL Server.
Использование уникальных имен ресурсов (URN). URN позволяет создавать экземпляры объектов SMO и ссылаться на такие объекты.
В модели объектов SMO в виде новых объектов и свойств представлены многие функции и компоненты, введенные в SQL Server 2005. В число этих новых функций и компонентов включены следующие.
Секционирование таблиц и индексов для хранения данных в схеме секционирования. Дополнительные сведения см. в разделе Основные понятия секционированных таблиц и индексов.
Конечные точки HTTP для управления SOAP-запросами. Дополнительные сведения см. в разделе Поддержка сеансов SOAP.
Изоляция моментальных снимков и управление версиями на уровне строк для повышения параллелизма. Дополнительные сведения см. в разделе Работа с изоляцией моментального снимка.
Коллекции схем XML, XML-индексы и типы данных XML, обеспечивающие проверку и хранение XML-данных. Дополнительные сведения см. в разделах Управление коллекциями XML-схем на сервере и Использование схем XML.
Базы данных моментальных снимков, позволяющие создавать копии баз данных только для чтения.
Поддержка компонентом Service Broker обмена информацией на основе сообщений. Дополнительные сведения см. в разделе Компонент SQL Server Service Broker.
Поддержка синонимов для множества имен объектов баз данных SQL Server. Дополнительные сведения см. в разделе Основные сведения о синонимах.
Управление компонентом Database Mail, которое позволяет создавать серверы электронной почты, профили электронной почты и учетные записи электронной почты в SQL Server. Дополнительные сведения см. в разделе Компонент Database Mail.
Поддержка зарегистрированных серверов для регистрации сведений о соединении. Дополнительные сведения см. в разделе Управление зарегистрированными серверами.
Трассировка и воспроизведение событий SQL Server. Дополнительные сведения см. в разделах Использование приложения SQL Server Profiler и Использование трассировки SQL.
Поддержка сертификатов и ключей для управления безопасностью. Дополнительные сведения см. в разделе Иерархия средств шифрования.
Триггеры DDL, обеспечивающие дополнительные функции при возникновении DDL-событий. Дополнительные сведения см. в разделе Триггеры DDL.
Пространство имен объектов SMO — Microsoft.SqlServer.Management.Smo. Объекты SMO реализованы в виде сборки Microsoft .NET Framework. Это означает, что использовать объекты SMO можно лишь после установки среды CLR из Microsoft.NET Framework. Сборки объектов SMO по умолчанию устанавливаются в глобальный кэш сборок с параметром пакета SDK SQL Server. Эти сборки размещаются в C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies\. Дополнительные сведения см. в документации по Visual Studio.NET Framework.
Классы модели объектов SMO
Классы модели объектов SMO подразделяются на две категории: классы экземпляров и служебные классы.
Классы экземпляров
Классы экземпляров представляют объекты SQL Server, такие как серверы, базы данных, таблицы, триггеры и хранимые процедуры. Класс ServerConnection используется для установления соединения с экземпляром SQL Server и для управления режимом сбора направляемых ему команд.
Объекты экземпляра модели SMO образуют иерархию, которая представляет иерархию сервера баз данных. Вверху размещаются экземпляры SQL Server, под ними располагаются базы данных, а далее – таблицы, столбцы, триггеры и т. д. Если логика допускает возможность существования связи «один родитель ко многим потомкам», например в таблице с одним или несколькими столбцами, тогда потомок представляется коллекцией объектов. В других случаях потомок представляется одним объектом.
Служебные классы
Служебные классы – это группа объектов, созданных явным образом для выполнения конкретных задач. В соответствии со своими функциями они разделяются на различные иерархии объектов.
Класс Transfer. Используется для передачи другой базе данных схемы и данных.
Классы Backup и Restore. Используются для создания резервной копии и восстановления баз данных.
Класс Scripter. Используется для формирования сценарных файлов, предназначенных для повторного создания объектов и их зависимостей.
Новые возможности объектов SMO
Оптимизированная производительность
При использовании объектов SQL-DMO для перечисления объектов необходимо, чтобы каждый объект в коллекции был полностью создан. Это неэффективно с точки зрения использования памяти и сетевых каналов связи. Во многих случаях для создания объекта не обязательно явно ссылаться на большинство его свойств.
С точки зрения использования памяти архитектура модели объектов SMO более эффективна, потому что на первом этапе объекты создаются лишь частично и от сервера требуются минимальные сведения по их свойствам. Полное создание объектов откладывается до того времени, когда выполняется явная ссылка на объект. Объект полностью создается тогда, когда требуется свойство, не входящее в набор изначально полученных свойств, или когда вызывается метод, требующий такое свойство. Переход от частично полностью созданных объектов к полностью созданным незаметен для пользователя. Кроме того, некоторые свойства, использующие большие объемы памяти, так и не считываются – если только не выполняется явное обращение к подобному свойству. Примером сказанному может служить свойство Size свойства объекта Database. Однако при частичном создании объектов возникает большее количество обменов данными через сеть, и потому с точки зрения производительности этот метод не обязательно будет наиболее эффективным для приложения.
Созданием экземпляров объектов можно управлять в соответствии с особенностями системной среды. При использовании метода отложенного создания экземпляров объем памяти, необходимый для работы приложения, сводится к минимуму, но на этапе обращения к свойствам может возникнуть большое число запросов к серверу.
Классы экземпляров (объекты, представляющие реальные объекты баз данных) могут существовать на трех уровнях создания. Эти уровни: минимальный экземпляр (лишь минимально необходимые свойства считываются в одном блоке), частично созданный экземпляр (все свойства, использующие относительно большие объемы памяти, считываются в одном блоке) и полностью созданный экземпляр. Традиционные состояния создания экземпляров – несозданный и полностью созданный. Состояние «частично созданный» повышает эффективность, так как частично созданный объект не содержит значений для полного набора свойств объекта. Состояние «частично созданный» применяется по умолчанию для объектов, на которые нет непосредственных ссылок. При обращении к одному из этих свойств возникает ошибка, которая инициирует создание полного экземпляра объекта.
Выполнение после сбора
Обычным методом выполнения является непосредственное выполнение. Инструкции передаются экземпляру SQL Server непосредственно по получении. Выполнение после сбора является альтернативным методом.
Выполнение после сбора дает возможность собирать пакеты Transact-SQL, которые обычно выполняются. В результате программист модели объектов SMO может отложить сценарий, сохранить его для выполнения в более поздний период или выполнить предварительный просмотр сценария для конечного пользователя. Так, инструкции create database, create table и create index могут быть переданы в одном пакете и затем выполнены как три последовательных шага. Этой функцией управляет пользователь с помощью объекта Server.
Поставщик WMI
Объекты поставщика WMI помещаются в объекты SMO. В результате программист модели SMO получает простую модель объектов, весьма напоминающую классы SMO. Однако в этом случае программист не должен понимать модель программирования, представленную пространством имен, и особенности организации поставщика WMI SQL Server. Поставщик WMI позволяет конфигурировать службы SQL Server, псевдонимы, а также сетевые библиотеки клиентов и серверов.
Создание сценария
В модели объектов SMO средства для работы со сценариями были улучшены и переданы в класс Scripter. С помощью класса Scripter разработчик может находить зависимости, выявлять связи между объектами и осуществлять манипуляции с иерархией зависимостей. Главным объектом, обеспечивающим работу со сценариями, является объект Scripter. Существует несколько поддерживающих объектов, которые осуществляют обработку зависимостей, а также реагируют на события состояния и на события ошибок.
Объект Scripter поддерживает следующие дополнительные параметры создания сценариев:
простой однофазный метод (сценарий создается за один этап);
усовершенствованный трехфазный метод (обнаружение зависимостей, формирование списков, создание сценария);
двусторонний поиск зависимостей (позволяет выявлять зависимости, или зависимые элементы);
реагирование на события состояния;
реагирование на события ошибок.
Уникальные имена ресурсов
Ключевая концепция при использовании библиотеки объектов SMO – уникальные имена ресурсов (URN). Синтаксис URN напоминает синтаксис XPath. XPath – это путь иерархии, используемый для указания объекта, в котором каждый уровень имеет квалификаторы и функции. В модели объектов SMO URN имеет два элемента – путь, а также именование атрибутов, обладающее ограниченными функциональными возможностями. Путь используется для указания местоположения объекта, тогда как именование атрибутов дает возможность осуществлять частичную фильтрацию.
Пример URN для базы данных:
/Server/Database[@Name='Adventureworks']
URN объекта может быть получен с помощью ссылки на его свойство URN. Объект Scripter тоже использует имена URN в качестве параметров, которые передают ссылки на объект методу объекта Scripter. Кроме того, URN можно указывать для метода GetSmoObject(Urn) объекта Server. Это делается для того, чтобы создать экземпляр объекта SMO.
Новые возможности SQL Server, реализованные в модели объектов SMO
Секционирование таблиц и индексов
Секционирование таблицы индексов дает возможность управлять распределением данных в таблицах и индексах по файловым группам. Эта новая функция представлена в объектах SMO.
Конечные точки
Запросы SOAP, а также запросы на зеркальное отображение баз данных обрабатываются конечными точками с использованием объекта Endpoint.
Уровень изоляции моментального снимка / управление версиями на уровне строк
Уровень изоляции моментального снимка (управление версиями на уровне строк) представлены свойствами нового объекта Database.
Пространство имен схемы XML, XML-индексы и тип данных XML
Пространства имен схемы XML представлены в модели объектов SMO коллекцией объектов. XML-индексы представлены в модели SMO свойством объекта Index.
Расширенные возможности полнотекстового поиска
В модели объектов SMO реализованы новые объекты, представляющие расширенные возможности полнотекстового поиска.
Объект Page Verify
Объект PageVerify представляет параметры проверки страниц баз данных.
Базы данных моментальных снимков
База данных моментальных снимков – это предназначенная только для чтения копия указанной базы данных, снятая в указанный момент времени. База данных моментальных снимков может быть определена с помощью свойства IsDatabaseSnapshot объекта Database.
Компонент Service Broker
Компонент Service Broker и его функциональные возможности представлены группой объектов
Улучшенные возможности индексов
Улучшенные возможности индексов SQL Server представлены новыми свойствами объекта Index.
Модели объектов SMO и SQL-DMO
Модель объектов SMO замещает и заменяет модель SQL-DMO. Модель объектов SMO поддерживает SQL Server 2000, SQL Server 2005 и SQL Server 2008. Эта модель поддерживает большее число задач управления SQL Server и включает в себя множество новых средств SQL Server. Модель SMO предназначена для того, чтобы обеспечить более высокую эффективность и предоставить дополнительные возможности управления.
Библиотека DMO представляет собой объектную модель COM, тогда как модель SMO реализована в виде сборки .NET Framework. Компоненты COM — это библиотеки, которые предоставляют пригодные для повторного использования средства приложениям и в программировании неуправляемых приложений. Сборки .NET Framework предоставляют пригодные для повторного использования средства для .NET Framework с целью написания приложений с управляемым кодом.
При переходе к использованию технологии .NET Framework можно применять приложения, написанные частично с помощью управляемого, а частично — неуправляемого кода. .NET Framework дает возможность взаимодействовать с компонентами COM, для чего требуется основная сборка взаимодействия. Для объекта SQL-DMO требуется оболочка среды выполнения, чтобы к нему можно было обращаться из приложения на базе .NET Framework.