Sigapss.spf corrompido

Erro:

Super File Open – Open File – Ctree Error 14 – IO Error: 0 – File corrupt at open File: sigapss.spf

Solução:

  1. Parar Protheus e C-tree Server.
  2. Em PROTHEUS_DATA\PSWBACKUP pegar o arquivo SIGAPSS.SPF mais recente e substituir pelo corrompido na system.
  3. Mover os arquivos SIGAHLP.HLP, SIGAHLE.HLE, SIGAHLS.HLS da system (guarde-os em outro lugar).
  4. Iniciar o C-tree, o serviço Protheus e entrar no sistema.

Resetar senha do Administrador do Protheus

Dica de ouro para quando esquecemos a senha de admin do Protheus, mas não podemos nos dar ao luxo de descartar todo o arquivo de senhas e, consequentemente, os perfis de usuários.

Siga os passos abaixo à risca:

1) Renomeie o arquivo sigapss.spf na pasta system e guarde-o.

2) Abra o configurador para que o sistema recrie o arquivo permitindo a entrada com usuário admin e senha em branco.

3) Saia do sistema.

4) Crie e compile o fonte:

#INCLUDE "TOTVS.CH"

User Function SPFCLOSE()

    SPF_CLOSE("SIGAPSS.SPF")

Return( Nil )

5) Entre novamente no SIGACFG e acesse a o cadastro de Fórmulas.

6) Inclua uma fórmula, digite na função U_SPFCLOSE() e pressione ENTER.

7) Ainda com o Cadastro de Fórmulas aberto, vá até a system para excluir o arquivo recém criado sigapss.spf e renomeie novamente o arquivo original.

8) Ainda no SIGACFG, cancele o cadastro e saia da rotina de Fórmulas. Acesse o cadastro de usuários, altere o Administrador e defina a senha livremente.

Atualizações Protheus 12

Fala pessoal. Eu estava enfrentando muitos problemas com a quantidade gigantesca de patches disponíveis desde o último RPO do P12, seja 12.1.7 ou 12.1.14. Para aplicar é impraticável, na 12.1.7 são mais de 2000 patchs desde 01/08/2016 (último RPO disponível).

Outro problema sério que ocorre é que quando filtramos os patchs de programa por banco de dados/idioma (ex. Top Connect Português), vêm um número muito pequeno de patchs. E quando filtramos apenas o release sem distinção de banco de dados e idioma aparecem milhares. Dentro delas, após descompactar, verificamos que todas as variações de PTM estão lá dentro (TTTP, TTTS, TTTE, TTDP, TTDS, etc. etc.).

Então o filtro está “escondendo” muita coisa. Por isso já faz um bom tempo que recomendo não filtrar por banco dados e idioma. Isso realmente está um pouco confuso. Acho que o portal pode estar sofrendo uma manutenção grande nos últimos meses.

Mas tenho uma boa notícia. Agora a TOTVS criou uma nova categoria chamada “Patches Acumulados” que salvou a pátria! Esses acumulados já existiam, mas se perdiam entre tantos patches na lista.

Cursor_e_TOTVS_S_A_-_Downloads_e_Atualizações

 

Enfim, agora não precisamos aplicar os inúmeros patches. Essa categoria nova praticamente substitui a “Patch de Programa”. Mas não totalmente, porque a categoria “Patch de Programa” ainda continuará servindo para baixarmos patches recentes que ainda não saíram em um acumulado ou então alguma bem específica pra atender a uma demanda num ambiente que ainda não está pronto pra ser totalmente atualizado.

Bom, essa informação não é oficial. Estou compartilhando com vocês a minha experiência nos últimos meses, e essa novidade que surgiu semana passada que vai ajudar bastante nas atualizações e migrações.

Forte abraço e até a próxima dica 😉

Dividir licenças entre DBAccess

O ambiente ideal para testes na empresa deve ser totalmente apartado, inclusive com DBAccess próprio. Para apontar dois DBAccess para um mesmo License Server é preciso definir quantas licenças cada um irá consumir pois, senão, o primeiro que se conectar ganha todas e o outro fica apenas com as 2 de demonstração. Isso é bem ruim quando o primeiro a se conectar é o de testes, ficamos sem licenças suficientes para a produção.

A solução é bem simples. Após instalar e configurar os dois DBAccess, faça a divisão através da cláusula LicenseLimit no DBAccess.ini. Os dois DBAccess devem ter essa configuração, senão não adianta.

Digamos que você tenha 50 licenças Top Connect, veja o exemplo de configuração abaixo para que reservemos 15 licenças para teste e o restante (35 licenças) para a produção.

DBAccess de Produção:

[General]
LicenseServer=10.20.20.28
LicensePort=5555
ByYouProc=0
...
LicenseLimit=35 <-- Olha ela aqui

DBAccess de Teste:

[General]
LicenseServer=10.20.20.28
LicensePort=5555
ByYouProc=0
...
LicenseLimit=15 <-- Olha ela aqui

IMPORTANTE: após configurar, desligue os dois DBAccess e inicie-os novamente.

Semáforo no License Server

p_semaforo-repetidor-14Rotinas que utilizam semáforo, como por exemplo, as da contabilidade. Internamente fazem uso das funções LockByName e UnlockByName já explicadas aqui neste blog.

De um tempo pra cá, essas funções, por padrão, passaram a controlar o semáforo através do License Server.

Mas quando sua base de testes e sua base de produção utilizam o mesmo License Server (o que acontece em quase todo lugar), um processamento num ambiente acaba travando o outro ambiente via semáforo.

Para solucionar esse problema inclua a cláusula SpecialKey no ambiente do AppServer.ini do Protheus de testes. Segue um exemplo:

[TESTE]
SourcePath=D:\TOTVS12Teste\Protheus\apo
RootPath=D:\TOTVS12Teste\Protheus_Data
StartPath=\system\
x2_path=
RpoDb=Top
RpoLanguage=portuguese
RpoVersion=120
LocalFiles=CTREE
Trace=0
localdbextension=.dtc
PictFormat=DEFAULT
DateFormat=DEFAULT
RegionalLanguage=BRA
TopMemoMega=1
HelpServer=192.168.10.247:8079
SpecialKey=BaseDeTestes <--- Olha ela aí

Permissões para TDS aplicar patchs e editar appserver.ini

Adicione as cláusulas abaixo no AppServer.ini do serviço Protheus para que seja possível aplicar patchs e editar o INI do server diretamente pelo Totvs Developer Studio.

[TDS]
AllowApplyPatch=*
AllowEdit=*

Esse asterisco indica que qualquer TDS em qualquer máquina, que tenha feito conexão com  o servidor, poderá aplicar patchs ou editar o INI. Mas é possível inserir apenas os IPs que você desejar permitir, separados por vírgula.

Veja a documentação completa sobre cada uma dessas cláusulas no TDN:

AllowApplyPatch: https://goo.gl/JuaKBh
AllowEdit: https://goo.gl/RIaI7A

Usando TCLink para conectar a outra base de dados

php-db-connection

Olá meus amigos! Andei um pouco sumido, mas vou me esforçar em continuar postando conteúdo por aqui. Vamos falar de conexão com outros bancos de dados de dentro do Protheus.

Com as funções AdvConnection(), TCLink() e TcSetConn() podemos nos conectar a outras bases de dados através do DBAccess (TopConnect). Lembrando que primeiramente temos que seguir a configuração padrão que é criar a conexão ODBC no servidor onde está instalado o DBAccess e depois configurar no próprio DBMonitor como já fazemos com a base Protheus.

No nosso fonte, bastará alternar entre os bancos de dados para realizar consultas e comandos SQLs. Veja abaixo um exemplo simples para se conectar a um banco que chamamos de GRUPOBI onde o DBAccess se encontra no mesmo servidor da aplicação escutando na porta 7890.

Local cConexao    := SuperGetMV("MV_XXCON01", .F., "MSSQL/GRUPOBI")
Local cServerAddr := SuperGetMV("MV_XXCON02", .F., "localhost")
Local nPort       := Val(SuperGetMV("MV_XXCON03", .F., "7890"))

If Type("_nTopProtheus") == "U"

    Public _nTopProtheus

    _nTopProtheus := AdvConnection() // obtém o ID da conexão atual

EndIf

If Type("_nTopGrupoBI") == "U"

    Public _nTopGrupoBI

    MsgRun("Conectando a Grupo BI...","Conexão",;
        {|| _nTopGrupoBI := TcLink(cConexao,cServerAddr,nPort) })

    If _nTopGrupoBI < 0

        MsgAlert("Não foi possível se conectar com Grupo BI. "+;
                 "Essa falha pode ocorrer devido ao número de licenças excedidas. "+;
                 "Tente mais tarde ou contate o administrador do sistema.")

        Return .F.

    EndIf

EndIf

TcSetConn(_nTopGrupoBI) // Utilize essa função para alternar entre as conexões

Você precisará de permissão para criação de tabelas no banco, pois o Protheus criará automaticamente nesta base as seguintes tabelas de controle do DBAccess: TOP_PARAM, TOP_SP, TOP_VIRTUALIDX, TOP_FIELD e TOP_IDXSTATS.

Vejam mais informações no TDN: http://tdn.totvs.com/display/tec/TCSetConn

Protheus 11.8 DEMO atualizado em 26/08/2015

Estou disponibilizando dois downloads do Protheus 11.8 atualizado até 26/08/2015 para simulação, desenvolvimento e estudo, conforme a Totvs permite, operando na empresa 99-Teste com 2 acessos no DBAccess (Top Connect). Os arquivos estão compactados em RAR5, por isso você precisa ter uma versão atualizada do seu descompactador.

Pastas Protheus e Protheus_Data

Podem ser utilizadas para uma nova instalação do Protheus.

Link para download: https://goo.gl/x0aC6U (722 MB)

Máquina Virtual

Máquina virtual com Windows XP SP2 + SQL Server + Protheus funcionando como serviço. É uma máquina virtual para o Oracle VirtualBox.

Atualização do post em 28/03/2017: pessoal, percebi que realmente fazer o download no Mega está complicado. Então segue aqui o link de download da máquina virtual pelo Google Drive, o arquivo está dividido em partes de 1 GB. Tive vários problemas pra conseguir isso mas funcionou, porém ficou maior a maquina virtual. Mas enfim, funciona.

Link para download no Google Drive: https://goo.gl/XM6Vh9 (10 arquivos RAR em partes totalizando 10 GB)

Link para download no Mega: https://goo.gl/hLf0H1 (5,06 GB)

Baixe o Oracle VirtualBox nesse link: https://www.virtualbox.org/wiki/Downloads

Screenshots da máquina virtual

vm_tela1

vm_tela2

vm_tela3

vm_tela4

vm_tela5

Problema ao restaurar backup no SQL Server

Algumas vezes pode ocorrer um problema muito chato ao restaurar um backup no SQL Server. É quando, após a restauração, o status do banco de dados permanece (restaurando) ou (restoring) e o SQL Server não permite nenhuma operação nessa base. Pesquisei na internet e descobri que o problema pode ocorrer no término da criação do arquivo de log. É um bug, mas a restauração foi bem sucedida. Encontrei uma solução extremamente simples para desbloquear o banco de dados. Acesse o Management Studio, conecte ao SQL Server, e execute o seguinte comando SQL:

RESTORE DATABASE NOME_DO_BANCO WITH RECOVERY

Pronto. Problema solucionado.