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.
Essa chave será utilizada apenas a partir da release 2510, releases anteriores não será possível utilizar. |
Para poder ativar as chaves o ambiente deve atender alguns requisitos, são eles:
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:

Caso precise resetar todas as numerações gravadas no dbacces também é possível:
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.