
Новые возможности объектов 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 объекта Server. Это делается для того, чтобы создать экземпляр объекта SMO.