Общие сведения об SMO

Объекты SMO SQL Server — это объекты, созданные для управления программными средствами Microsoft SQL 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 и SQL Server 2008 R2, можно легко работать в среде с продуктами различных версий.

Важное примечаниеВажно!

Объекты 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. В число этих новых функций и компонентов включены следующие.

Пространство имен объектов 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='Adventureworks2008R2']

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 2008 R2. Эта модель поддерживает большее число задач управления SQL Server и включает в себя множество новых средств SQL Server. Модель SMO предназначена для того, чтобы обеспечить более высокую эффективность и предоставить дополнительные возможности управления.

Библиотека DMO представляет собой объектную модель COM, тогда как модель SMO реализована в виде сборки .NET Framework. Компоненты COM — это библиотеки, которые предоставляют пригодные для повторного использования средства приложениям и в программировании неуправляемых приложений. Сборки .NET Framework предоставляют пригодные для повторного использования средства для .NET Framework с целью написания приложений с управляемым кодом.

При переходе к использованию технологии .NET Framework можно применять приложения, написанные частично с помощью управляемого, а частично — неуправляемого кода. .NET Framework дает возможность взаимодействовать с компонентами COM, для чего требуется основная сборка взаимодействия. Для объекта SQL-DMO требуется оболочка среды выполнения, чтобы к нему можно было обращаться из приложения на базе платформы .NET Framework.