Comparteix a través de


Información general (SMO)

Se aplica a: SQL ServerAzure SQL Database Azure SQL Instancia administrada Azure Synapse Analytics

Objetos de administración de SQL Server (SMO) son objetos diseñados para la administración mediante programación de Microsoft SQL Server. Puede usar SMO para crear aplicaciones de administración de SQL Server personalizadas. Aunque SQL Server Management Studio es una aplicación eficaz y extensa para administrar SQL Server, puede haber ocasiones en las que una aplicación SMO le serviría mejor.

Por ejemplo, las aplicaciones de usuario que controlan las tareas de administración de SQL Server podrían tener que simplificarse para satisfacer las necesidades de los nuevos usuarios y reducir los costos de entrenamiento. Es posible que tenga que crear bases de datos de SQL Server personalizadas o crear una aplicación para crear y supervisar la eficacia de los índices. También podría utilizarse una aplicación SMO para incluir hardware o software de terceros sin ningún tipo de problema en la aplicación de administración de base de datos.

Dado que SMO es compatible con SQL Server 2005 (9.x) y versiones posteriores, puede administrar fácilmente un entorno de varias versiones.

Entre las características de SMO se incluyen las siguientes:

  • Modelo de objetos de caché y creación de instancias de objetos optimizada. Los objetos solo se cargan cuando se hace referencia a ellos. Las propiedades de objeto solo se cargan parcialmente cuando se crea el objeto. Los objetos y propiedades restantes se cargan cuando se hace referencia a ellos directamente.

  • Ejecución por lotes de instrucciones Transact-SQL. Las instrucciones se ejecutan por lotes para mejorar el rendimiento de la red.

  • Capture instrucciones Transact-SQL. Permite capturar cualquier operación en un script. Management Studio usa esta funcionalidad para crear scripts de una operación en lugar de ejecutarla inmediatamente.

  • Administración de servicios de SQL Server con el proveedor WMI. Los servicios de SQL Server se pueden iniciar, detener y pausar mediante programación.

  • Generación de scripting avanzada. Los scripts de Transact-SQL se pueden generar para volver a crear objetos de SQL Server que describen las relaciones con otros objetos de la instancia de SQL Server.

  • Uso de nombres de recurso únicos (URN). Un URN permite crear instancias y hacer referencia a objetos SMO.

SMO también representa como objetos nuevos o propiedades muchas características y componentes que se introdujeron en SQL Server 2005 (9.x). Entre estas características y componentes nuevos se incluyen los siguientes:

  • Partición de tablas e índices para el almacenamiento de datos en un esquema de partición. Para obtener más información, vea Partitioned Tables and Indexes.

  • Extremos HTTP para administrar solicitudes SOAP. Para obtener más información, vea Implementing Endpoints.

  • Aislamiento de instantánea y control de versiones de nivel de fila de cara a una mayor simultaneidad. Para obtener más información, vea Trabajar con aislamiento de instantánea.

  • La colección de esquemas XML, los índices XML y el tipo de datos XML proporcionan validación y almacenamiento de datos XML. Para obtener más información, vea Colecciones de esquemas XML (SQL Server) y Uso de esquemas XML.

  • Bases de datos de instantánea para crear copias de solo lectura de bases de datos.

  • Compatibilidad de Service Broker con la comunicación basada en mensajes. Para obtener más información, vea SQL Server Service Broker.

  • Compatibilidad de sinónimos con varios nombres de objetos de base de datos de SQL Server. Para obtener más información, vea Sinónimos (Motor de base de datos) .

  • La administración de Correo electrónico de base de datos que le permite crear servidores de correo electrónico, perfiles de correo electrónico y cuentas de correo electrónico en SQL Server. Para obtener más información, consulte Correo electrónico de base de datos.

  • Servidores registrados que admiten el registro de información de conexión. Para obtener más información, vea Register Servers.

  • Seguimiento y reproducción de eventos de SQL Server. Para obtener más información, vea SQL Server Profiler, SQL Trace, SQL Server Distributed Replayy Extended Events.

  • Compatibilidad con certificados y claves para el control de seguridad. Para obtener más información, vea Encryption Hierarchy.

  • Desencadenadores DDL para agregar funcionalidad cuando se producen eventos DDL. Para más información, consulte DDL Triggers.

El espacio de nombres de SMO es Microsoft.SqlServer.Management.Smo. SMO se implementa como un ensamblado de Microsoft .NET Framework. Esto significa que Common Language Runtime de Microsoft .NET Framework versión 2.0 debe instalarse antes de usar los objetos SMO. Los ensamblados SMO se instalan de forma predeterminada en la caché global de ensamblados (GAC) con la opción SDK de SQL Server. Los ensamblados se encuentran en C:\Archivos de programa\Microsoft SQL Server\130\SDK\Assemblies. Para obtener más información, consulte la documentación de Visual Studio .NET Framework.

Clases SMO

Las clases SMO incluyen dos categorías: clases de instancia y clases de utilidad.

Clases de instancia

Las clases de instancia representan objetos de SQL Server, como servidores, bases de datos, tablas, desencadenadores y procedimientos almacenados. La ServerConnection clase se usa para establecer una conexión a la instancia de SQL Server y controlar el modo de captura de comandos enviados a ella.

Los objetos de instancia SMO forman una jerarquía que representa la jerarquía de un servidor de base de datos. En la parte superior se muestran las instancias de SQL Server, en las que se encuentran las bases de datos y se siguen con tablas, columnas, desencadenadores, etc. Si es lógico que haya una relación de un elemento primario a varios elementos secundarios, como en el caso de una tabla que tiene una o más columnas, el elemento secundario se representa mediante una colección de objetos. De lo contrario, el elemento secundario está representado por un objeto .

Clases de utilidad

Las clases de utilidad son grupos de objetos creados explícitamente para realizar tareas concretas. Se han dividido en distintas jerarquías de objetos basadas en su función:

  • Clase de transferencia. Se usa para transferir esquemas y datos a otra base de datos.

  • Clases de copia de seguridad y restauración Se usan para realizar copias de seguridad y restaurar bases de datos.

  • Clase Scripter. Se usa para crear archivos de script para la regeneración de objetos y sus dependencias.

Características de SMO

Rendimiento optimizado

La arquitectura SMO es eficaz en términos de memoria porque los objetos solo se crean instancias parcialmente al principio y se solicita información mínima de propiedad desde el servidor. La creación de instancias completas de los objetos se retrasa hasta que se hace referencia al objeto de forma explícita. Se crea una instancia completa de un objeto cuando se solicita una propiedad que no está en el conjunto de propiedades que se recuperan al principio o cuando se llama a un método que requiere dicha propiedad. La transición entre la creación de instancias parciales e instancias completas de los objetos es transparente para el usuario. Además, algunas propiedades que usan mucha memoria no se recuperan nunca, a menos que se haga referencia a ellas de forma explícita. Un ejemplo de esto último sería la propiedad Size de la propiedad de objeto Database. Sin embargo, la creación de instancias parciales requiere más ciclos de ida y vuelta en la red y no es la mejor opción de rendimiento para la aplicación.

Puede controlar la creación de instancias para que se ajuste al entorno del sistema. La dependencia de la creación de instancias retrasada minimiza la cantidad de memoria que requiere la aplicación, aunque puede desencadenar muchas solicitudes al servidor cuando se hace referencia a las propiedades.

Las clases de instancia, objetos que representan objetos de base de datos reales, pueden existir en tres niveles distintos de creación de instancias. El nivel de creación de instancias puede ser mínimo (solo se leen las propiedades mínimas necesarias en un bloque), parcial (todas las propiedades que usan una cantidad de memoria relativamente grande se leen en un bloque) y completo. Los estados tradicionales de creación de instancias no inicialmente y totalmente creados son los estados tradicionales de creación de instancias. El estado de creación de instancias parcial aumenta la eficacia, puesto que un objeto del que se ha creado una instancia parcial no contiene valores para todo su conjunto completo de propiedades. La creación de instancias parciales es el estado predeterminado de un objeto al que no se hace referencia directamente. Cuando se hace referencia a una de estas propiedades, se genera un error que solicita la creación de una instancia completa del objeto.

Ejecución de captura

La ejecución directa es el método habitual de ejecución. Las instrucciones se envían directamente a una instancia de SQL Server a medida que se incurre en ellas. La ejecución de captura constituye una alternativa al método habitual de ejecución.

La ejecución de captura permite capturar lotes de Transact-SQL que normalmente se ejecutarían. Esto permite al programador de SMO aplazar el script, almacenarlo para ejecutarlo posteriormente o proporcionar una vista previa al usuario final. Por ejemplo, es posible enviar una instrucción create database, create tabley create index en un lote y, a continuación, realizar la ejecución en tres pasos secuenciales. El usuario es quien controla esta funcionalidad utilizando el objeto Server.

Proveedor WMI

SMO encapsula los objetos de proveedor WMI. Esto proporciona al programador de SMO un modelo de objetos simple similar a las clases SMO estrechamente, sin necesidad de comprender el modelo de programación representado por el espacio de nombres y los detalles del proveedor WMI de SQL Server. El proveedor WMI le permite configurar servicios, alias y bibliotecas de red de cliente y servidor de SQL Server.

Scripting

En SMO, se han realizado mejoras en la creación de script, que se ha trasladado a la clase Scripter . La clase Scripter puede detectar dependencias, entender las relaciones entre objetos y habilitar la manipulación de la jerarquía de dependencias. El principal objeto de creación de script es el objeto Scripter . Hay también varios objetos de soporte que administran las dependencias y responden a eventos de progreso o error.

El objeto Scripter admite las siguientes opciones avanzadas de creación de script:

  • Creación de script simple de 1 fase (crea el script en un solo paso)

  • Scripting avanzado de 3 fases (crea el script en tres pasos; detección de dependencias, generación de listas, generación de scripts)

  • Detección de dependencias bidireccional (permite detectar dependencias o dependientes)

  • Respuesta a eventos de progreso

  • Respuesta a eventos de error

Nombres de recursos únicos

Un concepto clave para utilizar la biblioteca de objetos SMO es el nombre de recurso único (URN). El URN usa una sintaxis similar a XPath. XPath es una ruta de acceso jerárquica que se usa para especificar un objeto en el que cada nivel tiene calificadores y funciones. En SMO, el URN tiene dos elementos, la ruta de acceso y la denominación de atributo, que tiene una funcionalidad limitada. La ruta de acceso se usa para especificar la ubicación del objeto, mientras que la denominación de atributo permite un grado de filtrado.

Un ejemplo de un URN para una base de datos sería

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

El URN de un objeto puede recuperarse haciendo referencia a su propiedad URN. El objeto Scripter también usa los URN como parámetros que pasan referencias de objeto al método del objeto Scripter . Además, puede especificarse un URN para el método GetSmoObject del objeto Server . Se utiliza para crear una instancia del objeto SMO.

Características de SQL Server representadas en SMO

Creación de particiones de tabla e índice

Las particiones de tabla e índice permiten administrar la difusión de los datos de tablas e índices a través de grupos de archivos. Esta nueva característica se representa mediante objetos SMO.

Extremos

Los extremos administran las solicitudes SOAP y de creación de reflejo de base de datos utilizando el objeto Endpoint.

Control de versiones de nivel de fila o aislamiento de instantáneas

El aislamiento de instantánea (control de versiones de nivel de fila) se representa mediante nuevas propiedades de objeto Database.

Espacio de nombres de esquema XML, índices XML y tipo de datos XML

Los espacios de nombres de esquema XML se representan en SMO mediante una colección de objetos. Los índices XML se representan en SMO mediante una propiedad de objeto Index .

Mejoras de búsqueda de texto completo

En SMO, se proporcionan nuevos objetos que representan las mejoras en la búsqueda de texto completo.

Comprobación de páginas

El objeto PageVerify representa las opciones de comprobación de páginas de base de datos.

Bases de datos de instantáneas

Una base de datos de instantánea es una copia de solo lectura de una base de datos especificada en un punto concreto del tiempo. Una base de datos de instantánea puede especificarse utilizando la propiedad IsDatabaseSnapshot del objeto Database.

Service Broker

Service Broker y su funcionalidad se representan mediante un grupo de objetos

Mejoras en el índice

Las mejoras de índice de SQL Server se representan mediante nuevas propiedades en el Index objeto .

Consulte también

Replication Management Objects Concepts