Fórum Erro ao atualizar banco de dados #468972

05/02/2014

0

Boa Tarde

Utilizo um sistema da Automatiza em um cliente à 2 anos e devido a uma queda de energia o banco de dados corrompeu
Segui os passos deste topico https://www.devmedia.com.br/forum/reparar-bd-firebird-corrompido/59054 e o sistema voltou a abrir porem com um erro dizendo que a versao do software não é compativel com a versao do banco de dados... atualize o sistema e tentei rodar uma ferramenta de atualização do banco de dados e retornou o seguinte erro abaixo...

Será que algum tradutor poderia dar luz a

[05/02/2014 15:15:03] Atualizando de 4.1.8.9 para 4.1.8.10...
Erro 'DBX Error: No Mapping for Error Code Found' ao executar '/* Alter (V22_CHKPERMISSAOPERFIL) */
ALTER PROCEDURE V22_CHKPERMISSAOPERFIL(E_CDUSUARIO INTEGER,
E_CDPERFIL INTEGER,
E_CDDISPOSITIVO INTEGER,
E_CDSENTIDO INTEGER,
E_CHKZT INTEGER,
E_CHKAPB INTEGER)
RETURNS(S_CDTIPOPERMISSAO INTEGER,
S_CDTIPOEVENTOUS INTEGER,
S_CDNIVELPERMISSAO INTEGER,
S_CDPERMITIRTEMPORARIA INTEGER,
S_CDNIVELACESSO INTEGER,
S_CDHORARIO INTEGER)
AS
declare variable cdperfil integer;
declare variable cdestadoperfil integer;
declare variable cdnivelperfil integer;
declare variable cdestadopermissao integer;
declare variable cdsentidopermissao integer;
declare variable cdzonadetempo integer;
declare variable cdpermissaozonadetempo integer;
declare variable cdretornoantipassback integer;
declare variable cdnivelacesso integer;
declare variable cdhorario integer;
BEGIN
/* Retornos */
/* S_CDTIPOPERMISSAO:
1 = Permissão concedida
2 = Permissão negada
*/
/* S_CDTIPOEVENTOUS:
*/
/* S_CDNIVELPERMISSAO:
= cdNivelPerfil se Permissão concedida
*/
/* S_CDPERMITIRTEMPORARIA:
0 = Não permitir permissões temporárias
1 = Permitir permissões temporárias
*/

/* Inicializa variáveis de retorno */
S_CDTIPOPERMISSAO = NULL;
S_CDTIPOEVENTOUS = NULL;
S_CDNIVELPERMISSAO = NULL;
S_CDPERMITIRTEMPORARIA = 1;
S_CDNIVELACESSO = NULL;
S_CDHORARIO = NULL;

/* Inicializa variáveis locais */
cdPerfil = E_CDPERFIL;
cdEstadoPerfil = NULL;
cdNivelPerfil = NULL;
cdEstadoPermissao = NULL;
cdSentidoPermissao = NULL;
cdZonaDeTempo = NULL;
cdPermissaoZonaDeTempo = NULL;
cdRetornoAntipassback = NULL;
cdNivelAcesso = NULL;
cdHorario = NULL;

/* Verifica se usuário pertence a um perfil */
IF(cdPerfil IS NULL) THEN
BEGIN
SELECT
CDPERFIL
FROM TUSUARIO WHERE CONTADOR=:E_CDUSUARIO
INTO :cdPerfil;
END

IF(cdPerfil IS NULL) THEN
BEGIN
S_CDTIPOPERMISSAO = 2; /* Permissão negada */
S_CDTIPOEVENTOUS = 7; /*Acesso Negado! Usuário não tem permissão*/
SUSPEND;
EXIT;
END

/* Busca informações do perfil */
SELECT
CDESTADO
,CDNIVELUS
FROM TPERFIL WHERE CONTADOR=:cdPerfil
INTO
:cdEstadoPerfil
,:cdNivelPerfil;

/* Verifica estado do perfil */
IF(cdEstadoPerfil<>2/*Ativo*/) THEN
BEGIN
S_CDTIPOPERMISSAO = 2; /* Permissão negada */
S_CDTIPOEVENTOUS = 16; /* Desativado (Pe) */
SUSPEND;
EXIT;
END

SELECT CDSITUACAO FROM TUSUARIO_APB UAPB
WHERE UAPB.CDUSUARIO = :E_CDUSUARIO
AND UAPB.CDAPB = (SELECT CDAPB FROM TPERIFERICO_APB PAPB WHERE PAPB.CDPERIFERICO = :E_CDDISPOSITIVO)
INTO :CDRETORNOANTIPASSBACK;

IF(E_CDSENTIDO = 2 /*AMBOS*/) THEN
BEGIN
IF(CDRETORNOANTIPASSBACK = 1 /*DENTRO*/) THEN
BEGIN
E_CDSENTIDO = 1; /*SAIDA*/
END
ELSE
IF(CDRETORNOANTIPASSBACK = 0 /* FORA */) THEN
BEGIN
E_CDSENTIDO = 0; /*ENTRADA*/
END
ELSE
IF(CDRETORNOANTIPASSBACK = 255 /*IRRELEVANTE*/) THEN
BEGIN
E_CDSENTIDO = 2; /*AMBOS*/
END
END


/* Procura por permissões de perfil no dispositivo */
SELECT
CDZONATEMPO
,CDESTADO
,CDSENTIDO
FROM TPERMISSAOPE
WHERE
CDPERFIL=:cdPerfil
AND CDPERIFERICO=:E_CDDISPOSITIVO
AND CDSENTIDO = :E_CDSENTIDO
INTO
:cdZonaDeTempo
,:cdEstadoPermissao
,:cdSentidoPermissao;

IF(CDZONADETEMPO IS NULL) THEN
BEGIN
SELECT
CDZONATEMPO
,CDESTADO
,CDSENTIDO
FROM TPERMISSAOPE
WHERE
CDPERFIL=:cdPerfil
AND CDPERIFERICO=:E_CDDISPOSITIVO
INTO
:cdZonaDeTempo
,:cdEstadoPermissao
,:cdSentidoPermissao;
END

-- Entra aqui somente na verificação de Lista Branca (levando em conta que uma permissão sera encontrada
-- nos selects anteriores em uma leitura de cartao)
-- pois a consulta é feita com o sentido AMBOS, caso
-- uma permissão esteja definida como ENTRADA, não será encontrada, então, chegando nesse ponto
-- é procurada uma permissao com sentido ENTRADA, caso não encontre busca com sentido SAIDA.

IF(CDZONADETEMPO IS NULL)
THEN
BEGIN
SELECT
CDZONATEMPO
,CDESTADO
,CDSENTIDO
FROM TPERMISSAOPE
WHERE
CDPERFIL=:cdPerfil
AND CDPERIFERICO=:E_CDDISPOSITIVO
AND CDSENTIDO = 0 --Entrada
INTO
:cdZonaDeTempo
,:cdEstadoPermissao
,:cdSentidoPermissao;

cdSentidoPermissao = 2; --Ambos
END

IF(CDZONADETEMPO IS NULL)
THEN
BEGIN
SELECT
CDZONATEMPO
,CDESTADO
,CDSENTIDO
FROM TPERMISSAOPE
WHERE
CDPERFIL=:cdPerfil
AND CDPERIFERICO=:E_CDDISPOSITIVO
AND CDSENTIDO = 1 --Saida
INTO
:cdZonaDeTempo
,:cdEstadoPermissao
,:cdSentidoPermissao;
cdSentidoPermissao = 2; --Ambos
END

-- Se não encontrou nenhuma permissao, seta NULL nas variaveis
IF(CDZONADETEMPO IS NULL)
THEN
BEGIN
cdZonaDeTempo = NULL;
cdEstadoPermissao = NULL;
cdSentidoPermissao = NULL;
END

-- Encerra a Procura por permissões para Lista Branca

/* Verifica se não foi encontrada nenhuma permissão */
IF(
(cdZonaDeTempo IS NULL)
AND (cdEstadoPermissao IS NULL)
AND (cdSentidoPermissao IS NULL)) THEN
BEGIN
S_CDTIPOPERMISSAO = 2; /* Permissão negada */
S_CDTIPOEVENTOUS = 7; /* Acesso Negado! Usuário sem permissão */
SUSPEND;
EXIT;
END

/* Verifica estado da permissão */
IF(cdEstadoPermissao<>2/*Ativo*/) THEN
BEGIN
S_CDTIPOPERMISSAO = 2; /* Permissão negada */
S_CDTIPOEVENTOUS = 9; /* Acesso Negado! Permissão desativada */
SUSPEND;
EXIT;
END

/* Verifica sentido da permissão */
IF(
(cdSentidoPermissao<>2/*Ambos*/)
AND(cdSentidoPermissao<>E_CDSENTIDO)
AND(E_CDSENTIDO<>3/*Desconhecido*/)) THEN
BEGIN
S_CDTIPOPERMISSAO = 2; /* Permissão negada */
S_CDTIPOEVENTOUS = 8; /* Acesso Negado! Sentido negado */
SUSPEND;
EXIT;
END

IF(E_CHKZT<>0) THEN
BEGIN
/* Verifica zona de tempo */
SELECT
S_CDTIPOPERMISSAO
,S_CDNIVELACESSO
,S_CDHORARIO
FROM V22_CHKZONADETEMPO(:cdZonaDeTempo)
INTO
:cdPermissaoZonaDeTempo
,:cdNivelAcesso
,:cdHorario;

IF(cdPermissaoZonaDeTempo<>1/*Permissão concedida*/) THEN
BEGIN
S_CDTIPOPERMISSAO = 2; /* Permissão negada */
S_CDTIPOEVENTOUS = 12; /* Fora do horário(Pe) */
SUSPEND;
EXIT;
END
END

/*Permissão concedida*/
IF(E_CHKAPB<>0) THEN
BEGIN
-- Não permite permisões temporárias se permissão for negada por APB
S_CDPERMITIRTEMPORARIA = 0;

/* Verifica Anti-passback */
SELECT
R_RETORNO
FROM VERIFICAR_SITUACAO_APB(:E_CDSENTIDO,:E_CDDISPOSITIVO,:E_CDUSUARIO,:cdNivelPerfil)
INTO :cdRetornoAntipassback;

IF(cdRetornoAntipassback=1) THEN
BEGIN
S_CDTIPOPERMISSAO = 2; /* Permissão negada */
S_CDTIPOEVENTOUS = 29; /* Acesso Negado por APB ao perfil! */
SUSPEND;
EXIT;
END

IF(cdRetornoAntipassback=2) THEN
BEGIN
S_CDTIPOPERMISSAO = 2; /* Permissão negada */
S_CDTIPOEVENTOUS = 31; /*Limite da família excedido!*/
SUSPEND;
EXIT;
END
END

S_CDTIPOPERMISSAO = 1; /* Permissão concedida */
S_CDTIPOEVENTOUS = 13; /* Liberado ao perfil */
S_CDNIVELPERMISSAO = cdNivelPerfil;
S_CDNIVELACESSO = cdNivelAcesso;
S_CDHORARIO = cdHorario;

SUSPEND;
END
'.
[05/02/2014 15:15:03] ERROR: DBX Error: No Mapping for Error Code Found
Fernando Gahyva

Fernando Gahyva

Responder

Posts

13/02/2014

William

Eu sei que é uma pergunta básica, mas a versão atual do firebird é a mesma que estava antes de cair a energia?
Responder

Gostei + 0

13/02/2014

Fernando Gahyva

Sim... :(... Acho que o cliente vai autorizar a recuperação do banco de dados pela fabricante do sistema... mas continuarei com a pulga na oreia (nao esta atras... esta dentro e gritando)
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar