Introdução ao SQL-DMO
Atualmente, o Microsoft SQL Server é um sistema popular de gerenciamento de banco de dados. Com a melhoria contínua e o desenvolvimento do SQL Server e a combinação perfeita com os sistemas operacionais Windows Series da Microsoft, ele fornece melhor desempenho e facilidade de uso na plataforma Windows, por isso é cada vez mais valorizado. O nome completo do SQL-DMO é o SQL Distributed Management Objects. É uma coleção que contém um conjunto de COM com interfaces duplas. Através do SQL-DMO, podemos controlar o mecanismo de banco de dados e o gerenciamento de replicação que opera o SQL Server. Como o SQL-DMO é um conjunto de COM, ele pode ser usado por qualquer ferramenta de desenvolvimento que possa usar o COM, incluindo VB, Delphi, VC, BCB, ASP, etc., quase todas as ferramentas de desenvolvimento da plataforma Windows.
Usa SQL-DMO
Por que precisamos usar o SQL-DMO para gerenciar bancos de dados? Não é suficiente gerenciarmos o banco de dados usando os scripts Enterprise Manager e T-SQL? O SQL-DMO pode realizar atividades de gerenciamento de banco de dados flexíveis, personalizáveis e eficientes. Como o SQL-DMO fornece uma interface de gerenciamento para o SQL Server, através da programação, você pode personalizar as atividades de gerenciamento de acordo com suas necessidades. Por exemplo, se estivermos gerenciando uma grande organização com muitas instâncias do SQL Server. Agora você precisa adicionar um usuário a todas as instâncias do SQL Server em sua organização Você usa a programação SQL-DMO para implementar as chamadas, ela pode ser concluída de maneira fácil e eficiente com um ciclo. Na opinião do autor, o mais importante é que o MSDE possa ser gerenciado usando o SQL-DMO. O MS SQL Server é caro, enquanto o MSDE é gratuito. Em algumas aplicações pequenas e médias, o MSDE é suficiente. No entanto, como o MSDE fornece apenas um mecanismo de banco de dados, mas não fornece uma interface de gerenciamento visual, é impossível gerenciar os bancos de dados no MSDE regularmente, o que limita o escopo da aplicação do MSDE. No momento, se usarmos o SQL-DMO, podemos fornecer nossa própria interface de gerenciamento de banco de dados, para que possamos executar determinado gerenciamento regular do banco de dados no MSDE. Se o tempo e o custo não forem considerados, você poderá criar uma interface de gerenciamento semelhante à do Enterprise Manager. De fato, a maioria das funções do Enterprise Manager também é implementada usando o SQL-DMO. (SQL-NS é usado (SQL-Namespace, que também é uma coleção de objetos COM, fornecendo acesso ao espaço de nome do objeto no SQL Server), mas o próprio SQL-NS também é construído no SQL-DMO)
Host e composição SQL-DMO
O host do SQL-DMO é SQLDMO.DLL, localizado em X:/Arquivos de Programas/Microsoft SQL Server/80/Tools/Binn. Além disso, também requer os seguintes arquivos: l
sqldmo.dll ( biblioteca do tipo principal) l
sqldmo.rll ( arquivo de recursos de idioma) l
sqlsvc.dll ( biblioteca do tipo para gerenciamento de banco de dados) l
sqlsvc.rll ( arquivo de recursos de idioma) l
sqlunirlirl .Dll (camada de redirecionamento unicode ) l
sqlrsld.dll ( para carregamento de recursos) l
odbc ( incluindo odbc32.dll, sqlsrv32.dll, odbcbcp.dll , etc.) Aqui está uma explicação da estrutura de chamada (Figura 1):
| Nosso aplicativo cria objetos usando o SQL-DMO aqui |
Figura 1 Estrutura de chamada SQL-DMO
Árvore de objeto SQL-DMO
Vamos primeiro olhar para a enorme e complexa árvore de objetos do SQL-DMO (veja a Figura 3): o objeto SQLServer é a espinha dorsal dessa árvore de objetos, e existem três ramos principais sob este backbone: l Branch de banco de dados e uma série de implementações de objetos Sob Tarefas de arquitetura e manutenção de banco de dados de TI no SQLSERVER. l Jobserver Branch, uma série de objetos sob ele implementa o serviço SQL Server Agent (Agent). l Branch de replicação, uma série de objetos em ela implementa o serviço de replicação do SQL Server. Também há coisas a serem observadas: l A árvore de objetos não liste o objeto de aplicativo, mas esse é realmente um objeto relativamente importante. Qualquer objeto SQL-DMO possui uma propriedade apontando para o objeto Aplicativo. O objeto de aplicativo representa um aplicativo global, que contém dois objetos de coleção: servidores e grupos de servidores. Conforme mostrado na Figura 2: Figura 2 Aplicativo Objeto L Árvore apenas representa a estrutura do SQL-DMO e não lista todos os objetos, como objeto namelista, objeto de grupo de servidores, etc. A árvore de objeto SQL-DMO possui uma estrutura complexa e muitos objetos. Figura 3 Árvore de objeto SQL-DMO
Implementação de SQL-DMO encapsulado Delphi
A seguir, é apresentada uma descrição do componente TDBCTRL para encapsulamento SQL-DMO implementado pelo autor usando Delphi. Como eu precisava de um mecanismo de banco de dados gratuito em um determinado projeto, finalmente escolhi o MSDE, mas o MSDE não possui interface de gerenciamento, é apenas um mecanismo. Portanto, é necessário fornecer uma interface de gerenciamento simples e clara para o MSDE. Não precisamos fornecer tantas funções de gerenciamento quanto o Enterprise Manager, apenas precisamos fornecer as funções mais usadas. Considerando a facilidade de uso e a escalabilidade, é decidido fornecê -lo na forma de componentes. Os componentes implementados fornecem uma camada de embalagem para SQL-DMO, encapsulando algumas funções comumente usadas e simplificando o uso. Observe que a compilação deste componente requer a introdução da biblioteca do tipo SQL-DMO e a geração do código de descrição correspondente. O código contém muitos dados regulares e notação idiomática de objetos COM. Não discutirei como o Delphi usa o COM aqui, os leitores podem se referir a livros relacionados. Este componente contém as seguintes propriedades: host da propriedade: String Leia o nome do host, ou seja, o nome da instância do servidor SQL a ser conectado Senha: String Leia FPWD Write FPWD; Ogin: String Read Flogin Write Flogin; Um membro de dados privado: SQLServer para salvar. Seu tipo é _sqlServr. O construtor deve se conectar para criar um objeto SQLServer. O destruidor também é apenas para completar a destruição do objeto SQLServer. Construtor TDBCTRL.Create (AOWNER: TCOMPONS); Depois disso, Delphi completará a destruição de objetos COM nos bastidores. herdado; final; se queremos gerenciar e operar uma determinada instância do SQL Server, devemos primeiro nos conectar a esta instância. A seguinte função ConnectToServer implementa a função de como se conectar a uma instância do SQL Server. função tdbctrl.connecttoserver: boolean; Resultado: = VERDADEIRO; dependendo da permissão de usuário logada). Alguns dos métodos listados abaixo mostram alguns recursos. O método gettableList obtém todos os nomes da tabela de um banco de dados e os retorna em uma lista de TString. função tdbctrl.gettablelist (dbname: string; var tablelist: tStringList): boolean; var agoradb: _database; .Databases.item (dbname, sqlserver); // Obtenha objeto de banco de dados com base no nome do banco de dados para i: = 1 a agoradb.tables.count do começo agora: = agoradb.tables.item (i, 0); d (NowTable .Name); Todas as visualizações no banco de dados (visualizações), todos os campos de uma tabela ou visualização (colunas), todos os grupos de arquivos de dados de um banco de dados e arquivos de dados (grupos de file, dbfiles) etc. Estes podem ser especificamente referidos à árvore de estrutura de objetos da árvore da árvore de objeto de SQL-DMO. O uso de objetos SQL-DMO pode seguir as seguintes etapas básicas: obter um objeto ou objeto de coleta através do objeto da camada superior e, em seguida, usar o objeto ou obter um objeto no objeto de coleta antes do uso. De um modo geral, se for um objeto de coleção, existe um método de item, e o objeto de membro da coleção pode ser retornado com base no índice ou no nome. Deve -se notar que o índice começa em 1 em vez de 0. Os métodos acima são demonstrados como obter informações do banco de dados. Este método mostra como manter o banco de dados. função tdbctrl.backupdb (dbname, backupfile: string): boolean; // Os parâmetros passados são o nome do banco de dados a ser backup e o nome do arquivo de backup var dmoback: _backup; Objeto Iniciar // Defina o dispositivo de backup Experimente Excluir (BackupFile); = DBNAME+'BAK'; Aqui não retornará o valor, não há como pensar que a exceção é adicionada porque o final do conjunto de backup já existe; = DBNAME+BAK '; nil; end; final; além disso, quero dar um exemplo, explique como usar o objeto de aplicação mencionado no início. Este método é para obter os nomes de todos os disponíveis (ou seja, acessíveis e conectáveis) instâncias do SQL Server. função tdbctrl.getServerlist (var Serverlist: TStringList): boolean; var: _application; ; Objeto final; Fim; é claro, existem muitos métodos para o componente TDBCTRL, mas a implementação do código é semelhante, como o método de recuperação correspondente ao backup e ao método de desconexão correspondente à conexão. . Os leitores podem se referir ao código de exemplo e ao livro on -line do SQL Server para aprender com um exemplo e implementar as funções que desejam. Se você precisar de todo o código para este componente, poderá me pedir.
Outras instruções
A versão 2000 do SQL-DMO é totalmente compatível com o SQL Server7.0 e o SQL Server 2000. No entanto, mais de 80 novas interfaces são fornecidas para suportar os novos recursos do SQL Server 2000. Essas novas interfaces terminam com "2", que são superconjuntos dessas interfaces no SQL Server 7.0 original. Ou seja, se você deseja usar os novos recursos do SQL Server 2000, precisará usar a interface com "2" no final.
bibliografia
l Microsoft MSDNL Microsoft SQL Server Online Bookl "Delphi com programação aprofundada" (EUA) Eric Harmon Machinery Industry Press