Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada SQL do Azure
Banco de Dados SQL do Azure Synapse Analytics
no 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:
Particionamento de tabelas e índices para armazenamento de dados em um esquema de partição. Para obter mais informações, consulte Tabelas Particionadas e Índices.
Pontos de extremidade HTTP para gerenciar solicitações SOAP. Para obter mais informações, consulte Implementando pontos de extremidade.
Isolamento de snapshot e controle de versão em nível de linha para maior simultaneidade. Para obter mais informações, consulte Trabalhando com isolamento de instantâneo.
Coleção de esquema XML, índices XML e 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 instantâneos para criar cópias somente leitura de bancos de dados.
Suporte do Service Broker para comunicação baseada em mensagens. Para obter mais informações, consulte SQL Server Service Broker.
Suporte de sinônimo para vários nomes de objetos de banco de dados do SQL Server. Para obter mais informações, consulte Sinônimos (Mecanismo de Banco de Dados).
O gerenciamento do Database Mail que permite criar servidores de email, perfis de email e contas de email no SQL Server. Para obter mais informações, consulte Database Mail.
Suporte de Servidores Registrados para registrar informações de conexão. Para obter mais informações, consulte Registrar servidores.
Rastreamento e repetição de eventos do SQL Server. Para obter mais informações, consulte SQL Server Profiler, SQL Trace, SQL Server Distributed Replay e Extended Events.
Suporte para certificados e chaves para controle de segurança. Para obter mais informações, consulte Hierarquia de criptografia.
Gatilhos DDL para adicionar funcionalidade quando ocorrem eventos DDL. Para obter mais informações, consulte DDL Triggers.
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.