Geração de Scripts SQL via Stored Procedure utilizando SQL-DMO

Por Régis Sajo Diniz, Bacharel em Ciência da Computação, Consultor e Administrador de Banco de Dados do Grupo Pão de Açúcar

Olá pessoal!
Neste artigo estarei demonstrando como gerar scripts SQL através de uma stored procedure utilizando SQL-DMO.

Alguém pode dizer, mas isso eu consigo fazer pelo Enterprise Manager (SQL2000) ou pelo Management Studio (SQL2005), qual seria a vantagem?

Isso pode ajudar os DBA´s em suas rotinas administrativas, pois este código estando em SQL dentro de uma procedure facilita a sua customização e automatização dentro das necessidades da empresa.

Para que serve?

  • Geração de script sql de procedures em disco

  • Fazer um backup dos códigos SQL das procedures de tempos em tempos, podendo manipular o nome do script de saída

  • Com estes scripts salvos em disco, pode se fazer uma rotina (explicarei em um futuro artigo) que aplique estes scripts novamente nos databases para descobrir se alguma procedure está com erro de relacionamento em alguma tabela, ou alguma outra inconsistência

  • Com um único comando SQL que é a execução da proc pode se gerar os scripts rapidamente em disco

  • Podemos centralizar a geração e backup destes scripts a partir de um único servidor já que um dos parâmetros da proc é o nome do servidor

Como Funciona?

A procedure recebe os seguintes parâmetros:

Parâmetro

Descrição

Nome do Database

Este parâmetro é obrigatório

Nome do Servidor

Se não for informado, assume o servidor local

Nome do Objeto

Se não for informado gera script de todas as procedures do database

Patch

É onde será gerado os scripts em disco, se não for informado, gera os scripts no diretório onde está instalado o MSSQLServer mais a extensão "\script\procedure\" ,Note que isso pode ser alterado e este diretório deve estar criado abaixo dodiretório de instalação do MSSQLServer.Ex.: "C:\ Program Files\Microsoft SQL Server\MSSQL\script\procedure"

Para se conectar via SQL-DMO ao servidor deve ser passado o parâmetro usuário e senha, no caso do script em anexo este usuário e senha está dentro da proc.

Mas pode se criar uma tabela com o usuário e senha gravados nela e a procedure ir buscar lá as informações, é mais seguro.

Pode se criar um usuário específico apenas para isso com acesso aos databases mas sem permissão alguma, ou utilizar o "sa".

Lembrar de mudar o usuário e senha dentro da proc antes da execução.

É só executar passando os parâmetros e pronto os scripts serão gerados em disco conforme parâmetros.

Exemplo: exec up_dmo_gera_script_sql 'NomeDatabase',NomeServidor,NomeObjeto,Patch

Instalação

Para a criação da procedure aplicar o script abaixo no database que preferir ,mas as procs sp_hexadecimal e sp_displayoaerrorinfo devem ser criadas no master.

Como podem notar alem do script da proc também existem o script de criação de outras duas procedures sp_hexadecimal e sp_displayoaerrorinfo feitas pela Microsoft e que são disponibilizadas no Sql Server Books Online também.

Não esquecer de alterar o usuário de conexão dentro da proc.

Requisitos para instalação

Banco de dados: SQL Server 2000 ou SQL Server 2005

Código

Clique no link e salve o arquivo com extensão SQL: http://www.technetbrasil.com.br/colunas/regis/up_dmo_gera_script_sql.txt

Grande Abraço e até a próxima,
Régis Sajo Diniz
regis_diniz@uol.com.br