Visão geral (SMO)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse Analytics

SQL Server Management Objects (SMO) são objetos projetados para o gerenciamento programático do Microsoft SQL Server. Você pode usar o SMO para criar aplicativos de gerenciamento de SQL Server personalizados. Embora SQL Server Management Studio seja um aplicativo avançado e extenso para gerenciar SQL Server, pode haver momentos em que você seria melhor atendido por um aplicativo SMO.

Por exemplo, os aplicativos de usuário que controlam as tarefas de gerenciamento de SQL Server podem precisar ser simplificados para atender às necessidades de novos usuários e reduzir os custos de treinamento. Talvez seja necessário criar bancos de dados SQL Server personalizados ou criar um aplicativo para criar e monitorar a eficiência dos índices. Um aplicativo de SMO também pode ser usado para incluir hardware ou software de terceiros de modo homogêneo no aplicativo de gerenciamento de banco de dados.

Como o SMO é compatível com SQL Server 2005 (9.x) e versões posteriores, você pode gerenciar facilmente um ambiente de várias versões.

Os recursos no SMO incluem o seguinte:

  • Modelo de objeto armazenado em cache e criação de instância de objeto otimizada. Os objetos são carregados somente quando referenciados. As propriedades do objeto são parcialmente carregadas apenas quando o objeto é criado. Os objetos e propriedades restantes são carregados quando referenciados diretamente.

  • Execução em lote de instruções Transact-SQL. As instruções são processadas em lote para melhorar o desempenho de rede.

  • Capturar instruções Transact-SQL. Permite capturar qualquer operação em um script. O Management Studio usa essa funcionalidade para gerar script de uma operação em vez de executá-la imediatamente.

  • Gerenciamento de serviços de SQL Server com o provedor WMI. SQL Server serviços podem ser iniciados, interrompidos e pausados programaticamente.

  • Scripts avançados. Scripts Transact-SQL podem ser gerados para recriar objetos SQL Server que descrevem relações com outros objetos na instância do SQL Server.

  • Uso de URNs (nomes de recurso exclusivos). Um URN permite criar instâncias e referências de objetos de SMO.

O SMO também representa como novos objetos ou propriedades muitos recursos e componentes que foram introduzidos no SQL Server 2005 (9.x). Esses novos recursos e componentes incluem:

  • Tabela e particionamento de índice para armazenamento de dados em um esquema de partição. Para saber mais, confira Partitioned Tables and Indexes.

  • Pontos de extremidade de HTTP para o gerenciamento de solicitações de SOAP. Para obter mais informações, consulte Implementing Endpoints.

  • Isolamento de instantâneo e versão do nível de linha para aprimoramento de simultaneidade. Para obter mais informações, confira Trabalhando com o isolamento de instantâneos.

  • A coleção de esquemas XML, os índices XML e o tipo de dados XML fornecem validação e armazenamento de dados XML. Para obter mais informações, consulte Coleções de esquema XML (SQL Server) e Usando esquemas XML.

  • Bancos de dados de instantâneo para criar cópias somente leitura de bancos de dados.

  • Suporte do Service Broker à comunicação baseada em mensagens. Para obter mais informações, consulte SQL Server Service Broker.

  • Suporte a sinônimos para vários nomes de objetos de banco de dados SQL Server. Para obter mais informações, consulte Sinônimos (Mecanismo de Banco de Dados).

  • O gerenciamento de Database Mail que permite criar servidores de email, perfis de email e contas de email em SQL Server. Para obter mais informações, consulte Database Mail.

  • Servidores registrados dão suporte para registrar informações de conexão. Para obter mais informações, consulte Register Servers.

  • Rastreamento e reprodução de eventos de SQL Server. Para obter mais informações, consulte SQL Server Profiler, SQL Trace, SQL Server Distributed Replaye Extended Events.

  • Suporte a certificados e chaves para controle de segurança. Para obter mais informações, consulte Encryption Hierarchy.

  • Gatilhos DDL para adicionar funcionalidade quando ocorrerem eventos de DDL. Para obter mais informações, consulte DDL Triggers.

O namespace do SMO é Microsoft.SqlServer.Management.Smo. O SMO é implementado como um assembly do Microsoft .NET Framework. Isso significa que o Common Language Runtime do Microsoft .NET Framework versão 2.0 deve ser instalado antes de usar os objetos SMO. Os assemblies SMO são instalados por padrão no GAC (Cache de Assembly Global) com a opção SQL Server SDK. Os assemblies estão localizados em C:\Arquivos de Programas\Microsoft SQL Server\130\SDK\Assemblies. Para obter mais informações, consulte a documentação do Visual Studio .NET Framework.

Classes do SMO

As classes do SMO incluem duas categorias: classes de instância e classes de utilitário.

Classes de instância

As classes de instância representam SQL Server objetos, como servidores, bancos de dados, tabelas, gatilhos e procedimentos armazenados. A ServerConnection classe é usada para estabelecer uma conexão com a instância do SQL Server e controlar o modo de captura de comandos enviados a ela.

Os objetos da instância do SMO formam uma hierarquia que representa a hierarquia de um servidor de banco de dados. Na parte superior estão as instâncias de SQL Server, sob as quais estão os bancos de dados e seguindo com tabelas, colunas, gatilhos e assim por diante. Se for lógica a existência de uma relação de um pai para vários filhos, como uma tabela tendo uma ou mais colunas, o filho é representado por uma coleção de objetos. Caso contrário, o filho será representado por um objeto .

Classes de utilitário

Classes de utilitários são um grupo de objetos que foram criados para executar tarefas específicas explicitamente. Elas foram divididas em hierarquias de objeto diferentes baseado em função:

  • Classe de transferência. Usada para transferir esquema e dados a outro banco de dados.

  • Classes de backup e restauração. Usadas para fazer backup e restaurar bancos de dados.

  • Classe scripter. Usada para criar arquivos de script para a regeneração de objetos e suas dependências.

Recursos de SMO

Desempenho otimizado

A arquitetura SMO é eficiente em termos de memória porque os objetos são parcialmente instanciados apenas parcialmente no início, e informações mínimas de propriedade são solicitadas do servidor. A instanciação total de objetos é atrasada até que o objeto seja explicitamente referenciado. Um objeto é totalmente instanciado quando uma propriedade é solicitada e não está no conjunto de propriedades recuperadas primeiramente ou quando um método é chamado exigindo tal propriedade. A transição entre objetos parcialmente e totalmente instanciados é transparente para o usuário. Além disso, algumas propriedades que usam muitos memória nunca são recuperadas, a menos que a propriedade seja explicitamente referenciada. Um exemplo disto é a propriedade Size da propriedade do objeto Database. Porém, a instanciação parcial requer mais viagens de ida e volta de rede e não é a melhor opção de desempenho para o seu aplicativo.

Você pode controlar instanciação para que fique adequada ao ambiente do sistema. A dependência na instanciação adiada minimiza a quantidade de memória exigida pelo aplicativo, embora possa ativar muitas solicitações do servidor quando as propriedades forem referenciadas.

Classes de instância – objetos que representam objetos de banco de dados reais – podem existir em três níveis de instanciação. São elas: minimamente instanciadas (somente as propriedades mínimas são lidas em um bloco), parcialmente instanciadas (todas as propriedades que usam uma quantidade relativamente grande de memória são lidas em um bloco) e totalmente instanciadas. Infundados e totalmente instanciados são os estados tradicionais de instanciação. O estado parcialmente instanciadas aumenta eficiência, porque um objeto parcialmente instanciado não contém valores para o conjunto completo de propriedades de objeto. A instanciação parcial é o estado padrão para um objeto que não é referenciado diretamente. Quando um destas propriedades é referenciada, é gerada uma falha que solicita uma instanciação completa do objeto.

Execução de captura

A execução direta é o método habitual de execução. As instruções são enviadas para uma instância de SQL Server diretamente à medida que são incorridas. A execução de captura é a alternativa a isto.

A execução da captura permite capturar lotes Transact-SQL que normalmente seriam executados. Dessa forma, o programador de SMO pode adiar o script, armazená-lo para execução posterior ou fornecer uma visualização para o usuário final. Por exemplo, uma instrução create database, um create tablee create index podem ser enviadas em um lote e ser executadas como três etapas sequenciais. Essa funcionalidade é controlada pelo usuário com o objeto Server.

Provedor WMI

Os objetos do Provedor WMI são quebrados pelo SMO. Isso fornece ao programador SMO um modelo de objeto simples semelhante às classes SMO de perto, sem a necessidade de entender o modelo de programação representado pelo namespace e os detalhes do provedor WMI SQL Server. O Provedor WMI permite configurar SQL Server serviços, aliases e bibliotecas de rede de cliente e servidor.

Script

No SMO, a criação de scripts foi aprimorada e movida para a classe Scripter . A classe Scripter pode descobrir dependências, entender as relações entre objetos e habilitar a manipulação da hierarquia de dependência. O objeto principal da criação de scripts é o Scripter . Também há vários objetos que dão suporte, manipulam as dependências e respondem a eventos Error ou Progress.

O objeto Scripter dá suporte às seguintes opções de script avançadas:

  • Criação de script de 1 fase (cria o script em uma etapa)

  • Script avançado em três fases (cria o script em três etapas; descoberta de dependência, geração de lista, geração de script)

  • Descoberta de dependência bidirecional (permite a descoberta de dependências ou dependentes)

  • Resposta para eventos Progress

  • Resposta para eventos Error

Nomes de recursos exclusivos

Um conceito fundamental no uso da biblioteca de objetos do SMO é o URN (nome de recurso exclusivo). O URN usa uma sintaxe semelhante ao XPath. O XPath é um caminho de hierarquia usado para especificar um objeto no qual cada nível tem qualificadores e funções. No SMO, o URN tem dois elementos, o caminho e nomeação de atributo que limitaram funcionalidade. O caminho é usado para especificar o local do objeto, enquanto a nomeação do atributo permite um grau de filtragem.

Um exemplo de uma URN para um banco de dados é

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

O URN de um objeto pode ser recuperado pela referência de sua propriedade de URN. O objeto Scripter também usa URNs como parâmetros que transmitem referências de objeto ao método do objeto Scripter . Além disso, é possível especificar um URN para o método GetSmoObject do objeto Server . Isto é usado para criar uma instância do objeto do SMO.

SQL Server recursos representados no SMO

Particionamento de tabela e índice

O particionamento de tabela e índice permite gerenciar a expansão de dados em tabelas e índices por grupos de arquivos. Esse recurso novo é representado por objetos do SMO.

Extremidade

As solicitações de espelhamento de banco de dados e SOAP são manipuladas por pontos de extremidade que usam o objeto Endpoint.

Isolamento de instantâneo/Controle de versão no nível de linha

O Isolamento de instantâneo (controle de versão no nível de linha) é representado através de novas propriedades de objeto do Database.

Namespace de esquema XML, índices XML e tipo de dados XML

Namespaces de Esquema XML são representados no SMO por uma coleção de objetos. Os índices XML são representados no SMO por uma propriedade de objeto do Index .

Aprimoramentos da pesquisa de texto completo

São fornecidos objetos novos no SMO representando os aprimoramentos da pesquisa de texto completo.

Verificação de Página

O objeto PageVerify representa as opções de verificação de página do banco de dados.

Bancos de dados de instantâneo

Um banco de dados de instantâneo é uma cópia somente leitura de um banco de dados especificado como momento determinado. Um banco de dados de instantâneo pode ser especificado usando a propriedade IsDatabaseSnapshot do objeto Database.

Service Broker

O Service Broker e sua funcionalidade são representados por um grupo de objetos

Aprimoramentos do índice

SQL Server aprimoramentos de índice são representados por novas propriedades no Index objeto .

Consulte Também

Conceitos de objetos de gerenciamento de replicação