Estou colocando aqui uma dica de como fazer o export de um código de uma procedure do SQLServer 2005 para um arquivo texto, pois tive que fazer isto para uma solicitação de um cliente que queria utilizar isto junto do o Allfusion Harvest CM.
Pode ser utilizado da seguinte maneira:
- Utilizando o arquivo scptxfr.exe, mas este utilizatário faz o script do banco inteiro. Mas fica aqui registrado, pois pode ser que alguem precise. Este aplicativo somente tem no SQL 7.0 e 2000, no 2005 não existem mais. Se vc precisar será necessário instalar o 7 ou 2000 e pegar os seguintes arquivos: scptxfr.exe, scptxfr.rll e sqlresld.dll.
- Eu acabei fazendo um BAT para extrair a procedure utilizando o comando osql e utilizando a procedure interna sp_helptext. Segue o código do BAT:
@ECHO OFF
:: Arquivo BAT para extrair procedure do MSSQL-Server
::
:: PARAMENTROS
:: %1 – Server
:: %2 – Diretorio
:: %3 – Banco
:: %4 – Usuario
:: %5 – Senha
:: %6 – procedureIF “%1” == “” GOTO ErroParametro
IF “%2” == “” GOTO ErroParametro
IF “%3” == “” GOTO ErroParametro
IF “%4” == “” GOTO ErroParametro
IF “%5” == “” GOTO ErroParametro
IF “%6” == “” GOTO ErroParametroECHO set quoted_identifier OFF > %2\%6.sql
ECHO GO >> %2\%6.sqlECHO /****** Object: Stored Procedure %6 ******/ >> %2\%6.sql
ECHO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[%6]’) and OBJECTPROPERTY(id, N’IsProcedure’) = 1) >> %2\%6.sql
ECHO drop procedure [dbo].[%6] >> %2\%6.sql
ECHO GO >> %2\%6.sqlECHO exec sp_helptext %6 > %2\sqlprocedure.sql
IF NOT EXIST “%2\sqlprocedure.sql” GOTO Erro
osql -S %1 -d %3 -U %4 -P %5 -i %2\sqlprocedure.sql -o %2\outprocedure.sql -n -I -w 400 -h-1
IF NOT ERRORLEVEL 0 GOTO ErroExecute
IF NOT EXIST %2\outprocedure.sql GOTO Erro
type %2\outprocedure.sql >> %2\%6.sql
GOTO End
:Erro
ECHO ERRO: Nao foi criado os arquivos necessarios
GOTO End:ErroExecute
ECHO ERRO: Na extracao da procedure do banco
GOTO End:ErroParametro
ECHO ERRO: Falta Parametros
ECHO PARAMENTROS
ECHO 1 – Server
ECHO 2 – Diretorio
ECHO 3 – Banco
ECHO 4 – Usuario
ECHO 5 – Senha
ECHO 6 – procedure
GOTO End2:End
del %2\outprocedure.sql
del %2\sqlprocedure.sql:End2