Partilhar via


Visão Geral (SMO)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada SQL do AzureBanco de Dados SQL do Azure Synapse Analyticsno Microsoft Fabric

SQL Server Management Objects (SMO) são objetos projetados para gerenciamento programático do Microsoft SQL Server. Você pode usar o SMO para criar aplicativos de gerenciamento personalizados do SQL Server. Embora o SQL Server Management Studio seja um aplicativo poderoso e abrangente para gerenciar o 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 do SQL Server podem ter que ser simplificados para atender às necessidades de novos usuários e reduzir os custos de treinamento. Talvez seja necessário criar bancos de dados personalizados do SQL Server ou criar um aplicativo para criar e monitorar a eficiência dos índices. Um aplicativo SMO também pode ser usado para incluir hardware ou software de terceiros diretamente no aplicativo de gerenciamento de banco de dados.

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

Os recursos do SMO incluem o seguinte:

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

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

  • Capture Transact-SQL declarações. Permite que qualquer operação seja capturada em um script. O Management Studio usa esse recurso para criar scripts de uma operação em vez de executá-la imediatamente.

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

  • Scripting Avançado. Transact-SQL scripts podem ser gerados para recriar objetos do SQL Server que descrevem relações com outros objetos na instância do SQL Server.

  • Uso de Nomes de Recursos Exclusivos (URNs). Uma URN permite criar instâncias e fazer referência a objetos 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 o seguinte:

O namespace 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 (Global Assembly Cache) com a opção SDK do SQL Server. Os assemblies estão localizados em C:\Program Files\Microsoft SQL Server\130\SDK\Assemblies. Para obter mais informações, consulte a documentação do Visual Studio .NET Framework.

SMO Classes

As classes SMO incluem duas categorias: classes de instância e classes de utilidade.

Classes de Instância

As classes de instância representam objetos do SQL Server, 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 de instância SMO formam uma hierarquia que representa a hierarquia de um servidor de banco de dados. Na parte superior estão as instâncias do SQL Server, sob as quais estão os bancos de dados, e seguindo com tabelas, colunas, gatilhos e assim por diante. Se for lógico que há uma relação de um pai para muitos filhos, como uma tabela com uma ou mais colunas, então o filho é representado por uma coleção de objetos. Caso contrário, a criança é representada por um objeto.

Classes de utilidade

As classes de utilitários são um grupo de objetos que foram criados explicitamente para executar tarefas específicas. Eles foram divididos em diferentes hierarquias de objetos com base na função:

  • Transferência de turma. Isso é usado para transferir esquema e dados para outro banco de dados.

  • Classes de backup e restauração. Eles são usados para fazer backup e restaurar bancos de dados.

  • Aula de Scripter. Isso é usado para criar arquivos de script para a regeneração de objetos e suas dependências.

Funcionalidades SMO

Desempenho Otimizado

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

Você pode controlar a instanciação para se adequar ao ambiente do sistema. Depender da instanciação atrasada minimiza a quantidade de memória exigida pelo aplicativo, embora possa disparar muitas solicitações de servidor quando as propriedades são referenciadas.

As classes de instância, objetos que representam objetos de banco de dados reais, podem existir em três níveis de instanciação. Eles são instanciados de forma mínima (apenas as propriedades mínimas necessárias são lidas em um bloco), parcialmente instanciados (todas as propriedades que usam uma quantidade relativamente grande de memória são lidas em um bloco) e totalmente instanciados. Uninstanciated e fully instanciated são os estados tradicionais de instanciação. O estado parcialmente instanciado aumenta a eficiência porque um objeto parcialmente instanciado não contém valores para o conjunto completo de propriedades do objeto. A instanciação parcial é o estado padrão para um objeto que não é diretamente referenciado. Quando uma dessas 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 do SQL Server diretamente à medida que são incorridas. A execução da captura é a alternativa a isso.

A execução de captura permite capturar Transact-SQL lotes que normalmente seriam executados. Isso permite que o programador SMO adie o script, armazene-o para execução posterior ou forneça uma visualização para o usuário final. Por exemplo, um banco de dados create, uma tabela create e uma instrução create index podem ser enviados em um lote e, em seguida, executados como três etapas sequenciais. Essa funcionalidade é controlada pelo usuário usando o Server objeto.

Fornecedor WMI

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

Scripting

No SMO, o script foi aprimorado e movido para a classe Scripter . A classe Scripter pode descobrir dependências, entender as relações entre objetos e permitir a manipulação da hierarquia de dependência. O objeto de script principal é o objeto Scripter . Há também vários objetos de suporte que manipulam as dependências e respondem a eventos de progresso ou erro.

O objeto Scripter suporta as seguintes opções avançadas de script:

  • Script simples de 1 fase (cria o script em uma etapa)

  • Script avançado de 3 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 a eventos de progresso

  • Resposta a eventos de erro

Nomes de recursos exclusivos

Um conceito-chave no uso da biblioteca de objetos SMO é o Unique Resource Name (URN). A 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, a URN tem dois elementos, a nomenclatura de caminho e atributo que tem funcionalidade limitada. O caminho é usado para especificar o local do objeto, enquanto a nomenclatura do atributo permite um grau de filtragem.

Um exemplo de uma URN para um banco de dados é

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

A URN de um objeto pode ser recuperada fazendo referência à sua propriedade URN. O objeto Scripter também usa URNs como parâmetros que passam referências de objeto para o método do objeto Scripter . Além disso, um URN pode ser especificado para o método GetSmoObject do objeto Server . Isso é usado para criar uma instância do objeto SMO.

Recursos do SQL Server representados no SMO

Particionamento de tabelas e índices

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

EndPoints

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

Isolamento de snapshot/versionamento em nível de linha

O isolamento de instantâneo (controle de versão em nível de linha) é representado por novas Database propriedades de objeto.

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

Os namespaces do 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 Index .

Aprimoramentos de pesquisaFull-Text

Novos objetos são fornecidos no SMO que representam os aprimoramentos da pesquisa de texto completo.

página verificar

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

Bases de Dados de Instantâneos

Um banco de dados de instantâneo é uma cópia somente leitura de um banco de dados especificado como um point-in-time específico. Um banco de dados de instantâneo pode ser especificado usando a IsDatabaseSnapshotDatabase propriedade do objeto.

Agente de Serviços

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

Melhorias no Índice

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

Ver também

Conceitos de objetos de gerenciamento de replicação