Árvore de páginas


Esse documento tem como objetivo demonstrar a utilização do programa Script Manager, que é o atualizador de banco de dados do PEP (Prontuário Eletrônico do Paciente) do segmento de saúde. Ele deverá ser utilizado em todas atualizações de versão desses produtos, seguindo o processo previamente definido.

Script Manager: O que é? Como funciona?

O Script Manager é um programa em formato desktop, que faz parte do pacote de ferramentas pra administração dos ambientes do PEP. Ele é o responsável por executar scripts de alteração de banco de dados nas atualizações dos softwares.

Sendo assim, o processo de atualização do PEP 2.0 contempla a utilização do ScriptManager de maneira obrigatória, caso contrário, o banco de dados não será atualizado e a aplicação poderá não funcionar corretamente.

Execução de scripts no banco de dados

Como o Script Manager funciona tanto em tecnologia Oracle quanto SQL Server, ele utiliza os comandos nativos de cada tecnologia para executar os scripts.

Em ambiente Oracle:

  • Executável: SQLPLUS.exe
  • Exemplo de comando: sqlplus [usuário]/[senha]@[server]/[instancia] [arquivo.sql]
  • Geração de Output: Através do Spool
  • Tratamento de Erros: Aborta script no primeiro erro encontrado
    (Parâmetro WHENEVER SQLERROR EXIT SQL.SQLCODE configurado em cada arquivo SQL)


Em ambiente SQL Server:

  • Executável: SQLCMD.exe
  • Exemplo de comando: sqlcmd –S [connString] –U [usuário] –P [senha] –i [arquivo.sql] –o [arquivo.log]
  • Geração de Output: Através do parâmetro “-o” do SQLCMD
  • Tratamento de Erros: Aborta script no primeiro erro encontrado
    (Parâmetro: “-b”)

Verificação de scripts pendentes no ambiente

Para identificar quais scripts estão faltando executar em um ambiente, o ScriptManager faz uma comparação entre o diretório “dbscripts”, dentro do pacote de atualização, e de uma tabela de controle do banco de dados.

Configuração para execução

O ScriptManager precisa do web.config do PEP para ser executado. Para ele achar esse arquivo, quando acontece a primeira execução do ScriptManager, ele solicita que o usuário cadastre uma "Variável de Ambiente", chamada: TOTVS.HealthCare_SM.

O nome do ambiente também deverá ser alterado para dar sequencia na execução:




Você deverá navegar entre as pastas para localizar a pasta de instalação. Esse exemplo é para instalação de PEPxRM, no drive C:\:


Esse caminho setado na variável de ambiente, também irá servir para orientação da pasta de criação dos logs de execução.


Modelagem do Banco de Dados


O Script Manager utiliza basicamente 2 tabelas:


  • SYS138_UPDATE_DB – Tabela que guarda o histórico de execução de cada script;
  • SYS025_VERSION – Tabela de controle de versão

Utilização da Ferramenta
  • Logs de Execução

A pasta aonde são salvos os logs é concatenada com a variável de ambiente. Nesse nosso exemplo, ele criará os logs no caminho: C:\APPS\PMWEB\TOTVS.PEP.WCF\Logs.

Cada log gerado, contém um cabeçalho com algumas informações como, data/hora da Execução, host de execução, usuário de execução, etc.

Esse cabeçalho poderá ajudar caso tenha algum problema na execução dos scripts. O Script Manager, na sua primeira execução, cria automaticamente uma pasta com o nome do usuário owner para fins de organização dos logs e possível reutilização do ScriptManager em mais de um ambiente.


  • Nomenclatura de Logs

Os logs são gerados com a data e hora no nome, concatenando com um sufixo de status final de execução do ScriptManager, para melhor visualização do diretório de logs:

    • “NOSCRIPT” – Não havia nenhum script pendente;
    • “OK” – Scripts pendentes executados sem erros;
    • “NOTEXECUTED” – Havia scripts pendentes, porém não foram executados.
    • “ERROR” – Ocorreu algum erro na execução


  • Inserção do OWNER do Banco de Dados


A credencial precisa ser do usuário Owner do sistema(EX.: PEP), ou seja, o usuário que possui permissão para criar e alterar objetos dentro do schema do banco de dados. É o usuário diferente do que a aplicação do PEP normalmente utilizam (usuário Consulta EX.: CONS_PEP).

Note que o preenchimento do banco de dados foi feito de forma automática. Ele pegou as informações do WEB.Config do PEP que definimos o caminho na primeira execução do Script Manager.


  • Análise de scripts pendentes

Ao clicar em “Próximo”, o Script Manager verificará se existem scripts pendentes de execução no ambiente conectado (baseado em uma comparação dos scripts do pacote de atualização no diretório “dbscripts” com a tabela da aplicação SYS138_UPDATE_DB.)

  • Executando scripts pendentes

Caso existam scripts pendentes de execução, eles aparecerão com status “Não executado”, como mostra imagem abaixo:


Ações:

  1. Verificar status de execução de cada script (“Não executado”).
  2. Pode-se clicar em cada um para abrir o script SQL no bloco de notas (OPCIONAL).
  3. Clicar em “Executar” para rodar todos os scripts pendentes de uma única vez;
  4. Confirmar realização de backup e execução de scripts;
  5. Verificar mensagem de execução e logs gerados nos diretórios configurados.

Mensagem: Confirmação de realização de backup

Mensagem: Confirmação de execução dos scripts.

Obs: Caso qualquer uma das mensagens seja respondida com “Não”, os scripts não são executados.


  •  Erros na execução de scripts

Caso dê algum tipo de erro na execução dos scripts, o sistema mostra mensagem de erro abaixo e gera log com sufixo “ERROR” no diretório configurado.

Ações:

  1. Clicar em “OK”;
  2. Verificar logs e identificar o script e o motivo do erro(EX.: Chave violada, TableSpace não encontrada, etc.);
  3. Entrar em contato com a TOTVS e aguardar solução técnica;
  4. Se o script for corrigido, pode ser salvo na pasta “dbscripts“ do PEP;
  5. Reexecutar Script Manager;
  6. Ao abrir novamente Script Manager aparece mensagem informando que última execução gerou erro de script e questiona se já foi feito contato com a TOTVS e se o script já foi ajustado:

  • Sim – Executa scripts automaticamente
  • Não – Aborta Execução (Necessário clicar em “Analisar” para habilitar botão “Executar” novamente);


  • Quando não houver scripts pendentes


 

Prosseguir com atualização da aplicação.


  • Saindo sem executar os scripts pendentes

Quando houverem scripts pendentes e o Script Manager for fechado antes de executá-los, irá aparecer a mensagem a seguir solicitando a confirmação da saída sem execução de scripts pendentes. Também será informado no log de execução quais os scripts que não foram executados.


  • Migração de versão

Para migração de versão, a mensagem abaixo será apresentada no momento da validação da conexão:


Os passos seguintes são os mesmos das execuções demonstradas acima.

  • Sem rótulos