Páginas filhas
  • old not use - Controle de lock e numeração automática via dbaccess

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Aviso
titleImportante:

ESTE CONTEÚDO MIGROU PARA: https://tdn.totvs.com/x/0BaXO

Ao utilizar as funções LockByName e GetSXENum, o controle de concorrência é feito no serviço de License Server, a partir da lib 20251006 será possível definir que esse controle seja feito pelo dbaccess

para isso deve-se ativar essa funcionalidade via appserver.ini com a chave abaixo na seção do ambiente

; Ativa o controle de lock e numeração via dbaccess
LOCK_NUM_ON_DB=1

Opcionalmente a chave LOCK_NUM_ON_DB pode ser criada também como variável de ambiente do sistema operacional,
com isso todos os serviços do protheus que estiverem nesse servidor passaram a utilizar o controle pelo dbaccess.

Com essa chave ativa o controle será passado ao dbacces, para o usuário final não deve modificar nada no comportamento.

Caso necessite é possível fazer a importação das numerações salvas no License Server para o Dbaccess, saiba mais.

Com o controle feito pelo dbAccess a configuração de specialKey não será mais utilizada para lock.
O controle pelo db já é feito exclusivo por banco de dados conectado.

Aviso

Essa chave será utilizada apenas a partir da release 2510, releases anteriores não será possível utilizar.
A partir da release 2610 o controle pelo DB será ativado automaticamente, não sendo possível desativar

Validação para ativação da chave

Para poder ativar as chaves o ambiente deve atender alguns requisitos, são eles:

  • Lib maior igual a 20251006
  • Banco não pode ser sqlite
  • Versão do server deve ser maior igual a 24.3.1.0
  • Versão da DBAPI deve ser maior igual a 20240224-20241217

Controle de conflito

Como existe a possibilidade do protheus utilizar balanceamento de carga e a configuração é pelo appserver.ini
Foi adicionada uma validação na utilização da função, para impedir o acesso caso exista conflito na configuração da chave entre servers acessando o mesmo ambiente.

Exemplo:

  • Server A com a chave ativa faz o primeiro acesso
    • Será criado no semaforo um arquivo para determinar o tipo de acesso ao ambiente, podendo ser TC ou LS
  • Server B, com a chave desativada, apontando para o mesmo RootPath e banco de dados do server A, faz o acesso ao ambiente
    • Como a chave tá diferente dará uma viso para o usuário indicando o problema e encerrara a thread
    • Caso a thread iniciada pelo server B consiga acesso exclusivo no arquivo de semáforo, o conteúdo do mesmo será alterado e com isso a thread do server A que passará a dar o aviso.
  • Image Removed

Redefinição das numerações do DbAccess

Caso precise resetar todas as numerações gravadas no dbacces também é possível:

  • Parar o processo do dbaccess no servidor
  • Na pasta de instalação procurar pelo arquivo _nome-do-banco_number.val
  • Deletar o arquivo
  • Iniciar o Dbaccess.

Como isso todas as numerações gravadas serão perdidas, e na requisição de uma numeração será utilizada a forma como é hoje, posiciona no ultimo registro da tabela e soma 1 no ultimo código que encontrar.

Assuntos relacionados

...