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

Область применения:SQL ServerAzure SQL DatabaseAzure Managed InstanceAzure Synapse Analytics

Объекты управления SQL Server (SMO) — это объекты, предназначенные для программного управления Microsoft SQL Server. SMO можно использовать для создания настраиваемых приложений управления SQL Server. Хотя SQL Server Management Studio — это мощное и обширное приложение для управления SQL Server, иногда может возникнуть время, когда вы будете лучше обслуживаться приложением SMO.

Например, пользовательские приложения, управляющие задачами управления SQL Server, могут быть упрощены для удовлетворения потребностей новых пользователей и снижения затрат на обучение. Возможно, потребуется создать настраиваемые базы данных SQL Server или создать приложение для создания и мониторинга эффективности индексов. Кроме того, приложение SMO можно использовать для бесшовной интеграции аппаратных или программных компонентов от независимых поставщиков в приложение управления базами данных.

Так как SMO совместим с SQL Server 2005 (9.x) и более поздними версиями, вы можете легко управлять средой с несколькими версиями.

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

  • Секционирование таблиц и индексов для хранения данных в схеме секционирования. Дополнительные сведения см. в разделе Partitioned Tables and Indexes.

  • Конечные точки HTTP для управления SOAP-запросами. Дополнительные сведения см. в разделе Implementing Endpoints.

  • Изоляция моментальных снимков и управление версиями на уровне строк для повышения параллелизма. Дополнительные сведения см. в разделе Working with Snapshot Isolation.

  • Сбор xml-схем, XML-индексы и тип данных XML обеспечивают проверку и хранение XML-данных. Дополнительные сведения см. в статьях о коллекциях СХЕМ XML (SQL Server) и использовании XML-схем.

  • Базы данных моментальных снимков, позволяющие создавать копии баз данных только для чтения.

  • Поддержка обмена сообщениями на основе сообщений в Service Broker. Дополнительные сведения см. в разделе SQL Server Service Broker.

  • Поддержка синонимов для нескольких имен объектов базы данных SQL Server. Дополнительные сведения см. в разделе "Синонимы" (ядро СУБД).

  • Управление database Mail, которое позволяет создавать почтовые серверы, профили электронной почты и учетные записи электронной почты в SQL Server. Дополнительные сведения см. в разделе о компоненте Database Mail.

  • Поддержка зарегистрированных серверов для регистрации сведений о соединении. Дополнительные сведения см. в разделе Register Servers.

  • Трассировка и воспроизведение событий SQL Server. Дополнительные сведения см. в разделах SQL Server Profiler, SQL Trace, SQL Server Distributed Replayи Extended Events.

  • Поддержка сертификатов и ключей для управления безопасностью. Дополнительные сведения см. в разделе Encryption Hierarchy.

  • Триггеры DDL, обеспечивающие дополнительные функции при возникновении DDL-событий. Дополнительные сведения см. в разделе DDL Triggers.

Пространство имен объектов SMO — Microsoft.SqlServer.Management.Smo. SMO реализуется как сборка Microsoft .NET Framework. Это означает, что среда CLR из Microsoft .NET Framework версии 2.0 должна быть установлена перед использованием объектов SMO. Сборки SMO устанавливаются по умолчанию в глобальный кэш сборок (GAC) с параметром ПАКЕТА SDK SQL Server. Сборки находятся в папке C:\Program Files\Microsoft SQL Server\130\SDK\Assemblies. Дополнительные сведения см. в документации по Visual Studio .NET Framework.

Классы модели объектов SMO

Классы модели объектов SMO подразделяются на две категории: классы экземпляров и служебные классы.

Классы экземпляров

Классы экземпляров представляют такие объекты SQL Server, как серверы, базы данных, таблицы, триггеры и хранимые процедуры. Класс ServerConnection используется для установления подключения к экземпляру SQL Server и управления режимом захвата команд, отправленных в него.

Объекты экземпляра модели SMO образуют иерархию, которая представляет иерархию сервера баз данных. Вверху находятся экземпляры SQL Server, под которыми находятся базы данных, а также следующие таблицы, столбцы, триггеры и т. д. Если логика допускает возможность существования связи «один родитель ко многим потомкам», например в таблице с одним или несколькими столбцами, тогда потомок представляется коллекцией объектов. В противном случае дочерний объект представлен одним объектом.

Служебные классы

Служебные классы — это группа объектов, созданных явным образом для выполнения конкретных задач. В соответствии со своими функциями они разделяются на различные иерархии объектов.

  • Класс Transfer. Используется для передачи другой базе данных схемы и данных.

  • Классы Backup и Restore. Используются для создания резервной копии и восстановления баз данных.

  • Класс Scripter. Используется для формирования файлов скриптов, предназначенных для повторного создания объектов и их зависимостей.

Функции SMO

Оптимизированная производительность

Архитектура 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 поддерживает следующие дополнительные параметры создания скриптов:

  • простой однофазный метод (скрипт создается за один этап);

  • Расширенное 3-этапное скриптирование (создает скрипт в трех шагах; обнаружение зависимостей, создание списка, создание скриптов)

  • двусторонний поиск зависимостей (позволяет выявлять зависимости, или зависимые элементы);

  • реагирование на события состояния;

  • реагирование на события ошибок.

Уникальные имена ресурсов

Ключевая концепция при использовании библиотеки объектов SMO — уникальные имена ресурсов (URN). Синтаксис URN напоминает синтаксис XPath. XPath — это путь иерархии, используемый для указания объекта, в котором каждый уровень имеет квалификаторы и функции. В модели объектов SMO URN имеет два элемента — путь, а также именование атрибутов, обладающее ограниченными функциональными возможностями. Путь используется для указания местоположения объекта, тогда как именование атрибутов дает возможность осуществлять частичную фильтрацию.

Пример URN для базы данных:

/Server/Database[@Name='AdventureWorks2022']  

URN объекта может быть получен с помощью ссылки на его свойство URN. Объект Scripter тоже использует имена URN в качестве параметров, которые передают ссылки на объект методу объекта Scripter . Кроме того, URN можно указывать для метода GetSmoObject объекта Server . Это делается для того, чтобы создать экземпляр объекта SMO.

Функции SQL Server, представленные в SMO

Секционирование таблиц и индексов

Секционирование таблицы индексов дает возможность управлять распределением данных в таблицах и индексах по файловым группам. Эта новая функция представлена в объектах SMO.

Конечные точки

Запросы SOAP, а также запросы на зеркальное отображение баз данных обрабатываются конечными точками с использованием объекта Endpoint.

Изоляция моментальных снимков и управление версиями на уровне строк

Уровень изоляции моментального снимка (управление версиями на уровне строк) представлены свойствами нового объекта Database.

Пространство имен СХЕМЫ XML, XML-индексы и тип данных XML

Пространства имен схемы XML представлены в модели объектов SMO коллекцией объектов. XML-индексы представлены в модели SMO свойством объекта Index .

Усовершенствования полнотекстового поиска

В модели объектов SMO реализованы новые объекты, представляющие расширенные возможности полнотекстового поиска.

Проверка страниц

Объект PageVerify представляет параметры проверки страниц баз данных.

Базы данных моментальных снимков

База данных моментальных снимков — это предназначенная только для чтения копия указанной базы данных, снятая в указанный момент времени. База данных моментальных снимков может быть определена с помощью свойства IsDatabaseSnapshot объекта Database.

Service Broker

Service Broker и ее функциональные возможности представлены группой объектов

Улучшения индекса

Улучшения индекса SQL Server представлены новыми свойствами в объекте Index .

См. также

Replication Management Objects Concepts