SQL Server – Como exportar o código-fonte de todas as Stored Procedures, Functions, Views e Triggers de um database para arquivos .sql

Visualizações: 2.631
Tempo de Leitura: 5 minutos

Olá pessoal!
Bom dia.

Introdução

Neste post, vou mostrar a vocês como gerar os scripts de criação de objetos de programação do SQL Server (Functions, Trigger, Stored Procedures e Views) e exportá-los para arquivos .SQL utilizando consultas a views de catálogo. Desta forma, podemos automatizar a geração desses scripts.

Uma outra necessidade que me levou a criar esse script, foi que no meu database de funções úteis, tenho centenas de SP’s e funções CLR e T-SQL juntos. Às vezes quando quero copiar as funções e Stored Procedures escritas em T-SQL, ignorando as CLR, não tenho uma forma simples de fazer isso, pois a interface do SQL Server Management Studio não permite filtrar funções e stored procedures T-SQL e CLR, gerando o script de todas elas e depois preciso excluir os scripts que são CLR.

SQL Server - Tasks - Generate and Publish Scripts

Consultando o código-fonte dos objetos

Realizando uma simples consulta nas views de catálogo sys.sql_modules e sys.objects, podemos obter o código-fonte dos objetos de programação do SQL Server no database atual:

SQL Server - Query to Generate and Publish Scripts

Como exportar os objetos de programação para arquivos .SQL

Uma vez que já temos o código-fonte de cada objeto, basta agora exportá-lo para arquivos de texto e nossa tarefa está concluída. Visando facilitar esse processo, vou disponibilizar para vocês, uma Stored Procedure que já faz essa tarefa, iterando entre cada objeto e gerando o script dos objetos.

Como pré-requisito para que ela funciona, vocês precisarão dos objetos abaixo, cujo código-fonte está disponível no meu post SQL Server – Como listar, ler, escrever, copiar, excluir e mover arquivos com o CLR (C#):
– fncArquivo_Existe
– stpApaga_Arquivo
– stpEscreve_Arquivo

Exemplos de utilização:

Neste primeiro exemplo, vou demonstrar como exportar os scripts em um único arquivo .SQL, que irá colocar um cabeçalho para diferenciar cada script e no começo do arquivo irá utilizar um USE [DATABASE] para alterar o banco atual.

SQL Server - Export programmability objects to sql script one file-1

SQL Server - Export programmability objects to sql script one file-2

Neste segundo exemplo, vou demonstrar como exportar os scripts em vários arquivos .SQL, sendo 1 arquivo por objeto, e no começo de cada arquivo terá o comando USE [DATABASE] para alterar o banco atual. Além disso, ao setar o parâmetro @Fl_Gera_Com_Create = 0, o CREATE PROCEDURE, por exemplo, será substituido por um ALTER PROCEDURE, caso os objetos já existam no database de destino e você queira apenas atualizar os objetos.

SQL Server - Export programmability objects to sql script multiple files each object in a file

SQL Server - Export programmability objects to sql script multiple files each object in a file-2

Uma vez que você gerou os seus vários scripts, pode agora executá-los em batch no servidor e database de destino utilizando a dica que disponibilizei no post SQL Server – Como executar em batch todos os scripts .sql de uma pasta ou diretório pelo SQLCMD

Obrigado pela visita e até o próximo post.