quarta-feira, 13 de maio de 2020

DTSX\SSIS - importação de arquivos em lote de sql integration server


DTSX\SSIS - importação de arquivos em lote de sql integration server


Considerações 

1- Dentro do servidor crie uma pasta - NO meu caso criei em C:\Sistemas\importa_dtsx
2- Os scripts devem ser executados com usuário que seja sql admin, dentro da maquina
3- Todos os dtsx informados estão com senha de criptografia então faço o tratamento para isso na importação
4- Verifique o caminho onde esta o executável do DTSUTILL (este e o cara para automação)
5- Crie a pasta C:\Sistemas\import_dtsx\Importando\
6- Crie a pasta C:\sistemas\importados_dtsx\

Normalmente crio dois scripts um para backup e outro para importação.


BACKUP

CRIE UM ARQUIVO TIPO backup.bat BAT COM OS COMANDOS

-------------------------------------------------------------

REM Busca a data no formato AAAAMMDD para concatenar no nome do arquivo de log
set AAAAMMDD=
for /F "tokens=1-4 delims=/ " %%a in ('date /T') do set AAAAMMDD=%%d%%b%%c

 @echo off

MKDIR C:\Sistemas\BKPDTS\COMSENHA%AAAAMMDD% >logbkp%AAAAMMDD%.txt
MKDIR C:\Sistemas\BKPDTS\SEMSENHA%AAAAMMDD% >logbkp%AAAAMMDD%.txt
MKDIR c:\Sistemas\importa_dtsx\admin\

echo %date%-%time% - Iniciando a execucao dos scripts > logbkp%AAAAMMDD%.txt

for %%g in ( *.dtsx ) do (
echo %date%-%time% - importando o Dtsx: %%g >> logbkp%AAAAMMDD%.txt
echo %%~ng >>logbkp%AAAAMMDD%.txt
echo %date%-%time% - BKP do Dtsx: %%g >> logbkp%AAAAMMDD%.txt
"C:\SQLBIN\Microsoft SQL Server\130\DTS\Binn\DTUtil" /SQL "\%%~ng" /Decrypt SENHA /SourceS "Servidor\INSTANCIA" /Encrypt  FILE;"C:\Sistemas\BKPDTS\COMSENHA%AAAAMMDD%\%%g";3;SENHA  /Q >> bkpcomsenha.txt
"C:\SQLBIN\Microsoft SQL Server\130\DTS\Binn\DTUtil" /SQL "\%%~ng" /SourceS "Servidor\INSTANCIA" /Encrypt  FILE;"C:\Sistemas\BKPDTS\TRIBANCO\SEMSENHA%AAAAMMDD%\%%g";3;SENHA /Q >> bkpsemsenha.txt
  "echo %date%-%time% - bkp o Dtsx: %%~ng >> logbkp%AAAAMMDD%.txt
)
echo %date%-%time% - Fim dos bkps >> logbkp%AAAAMMDD%.txt
echo %date%-%time% - Execucao dos bkps finalizada, verifique o arquivo logbkp%AAAAMMDD%.txt.

move  logbkp%AAAAMMDD%.txt c:\Sistemas\importa_dtsx\admin\
move  copy.txt c:\Sistemas\importa_dtsx\admin\copy%AAAAMMDD%.txt

-----------------------------------------------

Observe que e feito 2 tipos de backup com senha e sem senha.
Ele executa com os arquivos SSIS na pasta ou seja tenho arquivos clientes.dtsx para importar, eu executo o bat ele vai extrair o backup do arquivo caso exista.


IMPORTAÇÃO DTSX

CRIE UM ARQUIVO TIPO BAT COM OS COMANDOS

REM Busca a data no formato AAAAMMDD para concatenar no nome do arquivo de log
set AAAAMMDD=
for /F "tokens=1-4 delims=/ " %%a in ('date /T') do set AAAAMMDD=%%d%%b%%

@echo off
cd "c:\Sistemas\import_dtsx\"
del "C:\Sistemas\import_dtsx\*.txt"
echo %date%-%time% - Iniciando processo > log.txt
echo %date%-%time% - apagando arquivos residuais >> log.txt
del "C:\Sistemas\import_dtsx\Importando\*.dtsx" >> log.txt
rem removendo arquivos já importados >> log.txt
del "C:\sistemas\importados_dtsx\*dtsx" >>log.txt
rem Inciando processamento >> log.txt
echo inico do backup -log.txt
call backup.bat
echo fim do backup -log.txt
echo inico da importação -log.txt
for %%g in ( *.dtsx ) do (
echo %date%-%time% - importando o Dtsx: %%g >> log.txt
echo %%~ng >>log.txt
echo IMPORTANDO ARQUIVO %%g >>log.txt
"C:\SQLBIN\Microsoft SQL Server\130\DTS\Binn\DTUtil" /File "C:\Sistemas\import_dtsx\%%g" /Decrypt SENHA /DestS "Servidor\INSTANCIA" /COPY sql;"%%~ng" /Q >> importfase1.txt
"C:\SQLBIN\Microsoft SQL Server\130\DTS\Binn\DTUtil" /SQL "\%%~ng" /Decrypt SENHA /SourceS "Servidor\INSTANCIA" /Encrypt  FILE;"C:\Sistemas\import_dtsx\Importando\%%g";0 /Q >> importfase2.txt
"C:\SQLBIN\Microsoft SQL Server\130\DTS\Binn\DTUtil" /File "C:\Sistemas\import_dtsx\%%g" /DestS "Servidor\INSTANCIA" /COPY sql;"%%~ng" /Q >> log.txt
  echo %date%-%time% - movendo arquivo %%g para importados >> log.txt
  move "C:\Sistemas\import_dtsx\%%g" "C:\sistemas\importados_dtsx\" >>log.txt
)
echo %date%-%time% - Fim da importacao >> log.txt
echo %date%-%time% - Execucao dos scripts finalizada, verifique o arquivo log.txt.
del C:\Sistemas\importados_dtsx\*.dtsx
copy "C:\Sistemas\import_dtsx\log.txt" "C:\Sistemas\import_dtsx\admin\log%AAAAMMDD%.txt"


Observe que e gerado um log.txt  e um log por fase de importação importfase2.txt e importfase1.txt, e após importação e movido para C:\sistemas\importados_dtsx\.



Espero que isso ajude