Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

Versão 1 Atual »

A mensagem de erro acima pode ser retornada pelo DBAccess, quando ocorre uma falha durante uma operação de alteração de estrutura de uma tabela, acionada pela função AdvPL TCAlter(). Esta mensagem não explica a causa, mas informa que a estrutura da Tabela [XXX] no SGDB pode estar incompleta ou os dados da tabela podem estar corrompidos, pois em alguma etapa intermediária da alteração de estrutura o processo não foi concluído.

A causa desta ocorrência pode ser verificada no log de erros do DBAccess ( Arquivo dbaccess.log , acessado através do DBAccess monitor. Normalmente houve alguma restrição do SGDB para remover ou alterar alguma propriedade de alguma coluna, relacionada a alguma View ou Gatilho, ou qualquer outro recurso do SGDB, que impede aquela operação de ser finalizada.

Um ponto importante sobre a alteração de estrutura é: O DBAccess parte da premissa que a tabela não têm dependências ou elementos externos que impeçam uma alteração estrutural. Por exemplo, quando você habilita no ERP Microsiga o uso da Integridade Referencial de dados, é necessário desligar a Integridade Referencial antes de realizar uma alteração estrutural em uma tabela, executar algum compatibilizador ou virada de versão que faça uma alteração estrutural.

Muitas vezes os DBAs inserem estatísticas ou gatilhos direto no SGDB, para algumas tabelas. Nada impede que recursos desta natureza, desde que não alterem o comportamento esperado das inserções e updates realizadas pela aplicação, porém tais recursos devem ser removidos do SGDB antes de fazer uma alteração estrutural, e então recolocados após a alteração estar completa. 

Segue baixo um exemplo, de falha na atualização de versão, no Banco MSSQL, onde foi criada uma estatística para uma determinada coluna de uma tabela do padrão. A Alteração estrutural tenta remover esta coluna, mas não consegue devido a existência da estatística.

 

04/01/2016 12:52:20 : [BEGINLOG]
Error : 5074 (37000) (RC=-1) - [Microsoft][ODBC SQL Server Driver][SQL Server]The statistics 'CTB_FILORI' is dependent on column 'CTB_FILORI'. ( From tMSSQLConnectionAlterTable_1 )
Thread ID [6096] User [sigasp] IO [5800] Tables [0] MaxTables [1] Comment [] Status [] SP [ ] Traced [No] InTran [No] DBEnv [MSSQL/BASEP12TST] DBThread [(SPID 132)] Started [04/01/2016 12:50:17] LastIO [] IP [192.168.0.202:1245] RCV [62330] SND [184900] TCBuild [20141119]
ALTER TABLE dbo.CTB010 DROP COLUMN CTB_FILORI
[ENDLOG]
04/01/2016 12:52:20 : [BEGINLOG]
TC_ALTER FAILED on file [CTB010]. Table DATA or STRUCTURE should be INVALID or CORRUPTED. ( From tDBServer::AlterFile )
Thread ID [6096] User [sigasp] IO [5800] Tables [0] MaxTables [1] Comment [] Status [] SP [ ] Traced [No] InTran [No] DBEnv [MSSQL/BASEP12TST] DBThread [(SPID 132)] Started [04/01/2016 12:50:17] LastIO [] IP [192.168.0.202:1245] RCV [62330] SND [184900] TCBuild [20141119]
 

 

 

 

  • Sem rótulos