Histórico da Página
Tentativa de reservar registro no Alias em EOF Stack de chamadas em MSRLOCK.eof Controle de transaçoes Habilitado
...
Produto: | Microsiga Protheus® |
Ocorrência: | Mensagem: Tentativa de reservar registro no Alias |
X em EOF Stack de chamadas em MSRLOCK.eof Controle de transaçoes Habilitado Tenta novamente ? Essa mensagem sera fechada em 5 segundos |
Conceito: |
O controle de transação é uma ferramenta importante que garante a integridade de dados quando uma determinada operação é realizada no Banco de Dados.O Protheus possui o parâmetro MV_TTS que quando ativado garante que este processo exista nos processos críticos de transação de arquivos
As alternativas existentes quando da atualização de tabelas são:
|
CASO 1
EOF Stack em MSRLOCKA mensagem "EOF Stack em MSRLOCK" indica que a rotina tentou reservar um registro |
para ser manipulado no processamento; mas o ponteiro da tabela estava em |
FIM DE ARQUIVO (MODO EOF) |
pois não localizou o dado procurado na Tabela. |
É gravado um arquivo de log denominado msrlock.eof na pasta system. Para |
uma correta conferência, deve-se realizar o processo com a ocorrência em ambiente de homologação onde ocorra o problema, após apagar este registro (para eliminar dados gravados anteriormente). |
Esta inconsistência pode acontecer nas situações abaixo:
1º Customizações / Personalizações em seu ambiente.
Personalização por Ponto de Entrada:Algumas personalizações utilizam os comandos dbSeek, MsSeek, dbGoTo e etc. que desposicionam os registros de tabelas utilizadas nas rotina do produto padrão causando o problema de "EOF Stack em MSRLock". Para este caso recomendamos que utilize um RPO limpo sem customizações para verificar se o problema esta sendo causado por alguma personalização.
Caso não seja possível utilizar um repositório limpo para o teste, é necessário habilitar em seu ambiente a chave IXBLOG=NORUN (Para informações acesse: http://www.tdn.totvs.com.br/display/public/mp/Chave+IXBLOG)
Registrar a linha de comando IXBLOG=NORUN no ini do server dentro da sessão do ambiente
Simular o processo e verificar se a inconsistência permanece!
Após a execução do procedimento a linha criada no *.INI do server deve ser removida, pois pode causar baixa performance no sistema se mantida.
OBS: Caso ainda assim permaneça, é gravado um arquivo de log denominado msrlock.eof na pasta system.
Para a correta conferência, deve-se realizar o processo com a ocorrência em ambiente de homologação onde ocorra o problema, após apagar o arquivo já gravado no diretório (para eliminar dados gravados anteriormente).
Personalização por Dicionário de Dados:
Verificar se há customizações na Estrutura do Protheus, como por exemplo, Índices (SIX) ou gatilhos (SX7).
Realizar backup dos arquivos na Pasta System e recriar com um dicionário de dados padrão a atualizado. Refazer o processo.
Exemplo: | ||||||||||||||||||||||||||||||||||||
Procedimentos: |
|
2º Inconsistência na rotina possivelmente causada por atualizações incompatíveis no ambiente
Certificar-se de estar com últimas atualizações do Portal do Cliente. Em ambiente homologação testar com último RPO, Binarios, DBACCESS, LIB e pacote quinzenal de atualizações. Verificar se neste cenário ocorre o problema.
CASO 2
O registro número X do Arquivo X encontra-se Bloqueado por outro usuário
Já a mensagem "O registro número X do Arquivo X encontra-se Bloqueado por outro usuário" indica que a rotina tentou acessar um registro, o qual está reservado por algum processamento de outro usuário.
Esta inconsistência pode acontecer nas situações abaixo:
1º Registro Bloqueado por outros Usuários (possivelmente com instância presa)
Obs: Em caso de registro bloqueado por outro usuário, uma opção paliativa rápida é reiniciar o servidor (parando os serviços do TOP, Banco de dados e Server)
Para identificação de causa da ocorrência é necessário identificar qual o usuário está segurando a reserva do registro através da ferramenta DBACCESS Monitor.
DBAccess - Monitor > Aba Usuários > Locks
Em algumas situações a reserva de registros pode ocorrer devido a utilização de serviços que ficam executando operações em seu ambiente (JOBs), neste caso recomendamos que desative esses serviços e refaça os testes afim de verificar se o causador do incidente.
2º Parâmetros que auxiliam na resolução da reserva de registros
MV_GNRENF - Caso esteja habilitado, recomendamos desabilita-lo (MV_GNRENF = .F.)MV_FATTRAV - (Nossa recomendação é utilizar esse parâmetro): TUPKT5_DT_Criação do Parâmetro MV_FATTRAV3º Customizações / Personalizações em seu ambiente.
|
|
|
|
|
|
Pontos de Entrada que permitem desativar o LOCK de registros das tabelas:
Ao desligar o LOCK de registros das tabelas poderá permitir divergências dos campos de controle devido movimentar o registro durante o processamento. Avalie criteriosamente o uso de Pontos de Entrada com esta finalidade.
MT410TRV - Liberação da trava de registros para as tabelas SA1/SA2/SB2
M461TRV - Libera a trava dos registros da tabela SB2
Caso esteja com problemas de Locks nas tabelas SB2 e SA1 recomendamos a leitura da documentação abaixo:
DOC0033_Bloqueio_Pedido_de_Venda_x_Tela_GNRE_Documento_de_Saídahttp://tdn.totvs.com/pages/viewpage.action?pageId=235336214