O arquivo dbconsole.log, gerado automaticamente pelo TOTVS | DBAccess, contém informações sobre a inicialização e finalização do DBAccess, entrada e saída de conexões, entre outras informações sobre a execução de processos internos e informações adicionais para fins de diagnóstico.
Abaixo, alguns exemplos de informações gravadas neste arquivo, e o seu significado.
Thread (<thread>) disconnected prematurely! (RECEIVEBLOCK)
A mensagem é registrada quando uma conexão for dada como encerrada (na camada de rede) antes da notificação de encerramento e do processamento da solicitação de encerramento.
Begin TopClient Thread (<dbaccess-thread-id>,<appserver-ip>,<database>/<datasource-name>,<user-logged-os/renamed-user-protheus>,<user-logged-os>,<hostname>,DBApi <from-dbapi-version>)
A mensagem é registrada quando uma conexão foi estabelecida entre o servidor de aplicação e o gateway do banco de dados.
End TopClient Thread (<dbaccess-thread-id>) (IOs <io-count> / RCV <received-bytes> / SND <sent-bytes> )
A mensagem é registrada quando uma conexão, estabelecida entre o servidor de aplicação e o gateway do banco de dados, é encerrada.
Exit TopClient Thread (<dbaccess-thread-id>) [TERMINATED] (IOs <io-count> / RCV <received-bytes> / SND <sent-bytes> )
A mensagem é registrada quando uma conexão foi interrompida ou quando a conexão for dada como encerrada (na camada de rede) antes da notificação de encerramento e do processamento da solicitação de encerramento.
Exit with active transaction
A mensagem é registrada quando uma conexão com uma transação aberta/pendente foi interrompida ou quando a conexão com uma transação aberta/pendente for dada como encerrada (na camada de rede).
Formato de mensagem de erro padrão
Uma ocorrência de erro registrada no DBAccess, por consequência de um erro retornado pelo SGDB, é registrada no log de console (dbconsole.log) e no log de erros (dbaccess.log) no seguinte formato:
Error : <sql_native_error> (<sql_state>) (RC= <rc_stat>) - <sgdb_error_description> ( From <dbaccess_proc> ) Thread ID [<thread>] User [<user>] IO [<nnn_ios>] Tables [<open_tables>] MaxTables [<max_open_tables>] Comment [<thread_observ>] Status [<op_info_str>] SP [<sp_flag> ] Traced [<trace_flag>] InTran [<transacion_flag>] DBEnv [<database>/<dbenv>] DBThread [<sgdb_thread>] Started [<start_dt>] LastIO [<lastio_dt>] IP [<IP>] RCV [<rcv_bytes>] SND [<snd_bytes>] TCBuild [<dbaccess_build>] <SQL_STATEMENT> [ OPERATION_DETAILS ]
Uma ocorrência de execução com sucesso, porém houveram informações adicionais relacionadas a execução, é registrada pelo DBAccess como uma ocorrência de advertência. Contém todos os dados da ocorrência de erro, mas é iniciada com "Warning :" ao invés de "Error :".
Warning : 598 (01550) (RC=1) - [IBM][CLI Driver][DB2/NT64] SQL0598W O índice existente "DB2ADMIN.SX2T10_PK" é utilizado como o índice para a chave primária ou para uma chave exclusiva. SQLSTATE=01550( From tDBServer::CreateFile ) Thread ID [300] User [Administrador] IO [26] Tables [0] MaxTables [0] Comment [] Status [] SP [ ] Traced [No] InTran [No] DBEnv [DB2/MP1217] DBThread [(DB2ID *LOCAL.DB2.151001203809)] Started [01/10/2015 17:38:08] LastIO [] IP [127.0.0.1:1234] RCV [570] SND [71] TCBuild [20141119] ALTER TABLE DB2ADMIN.SX2T10 ADD PRIMARY KEY (R_E_C_N_O_)
Na ocorrência acima, o Bando de Dados DB2 apenas informa que, para acrescentar a chave primária de registro em uma tabela, foi usado um índice já existente que atendia a condição, e não foi criado um índice novo. Este comportamento é o esperado, o índice de chave primária é criado em um momento anterior com uma parametrização específica.
Error : 2601 (23000) (RC=-1) - [Microsoft][SQL Server Native Client 10.0][SQL Server]Cannot insert duplicate key row in object 'dbo.SPED050' with unique index 'SPED050_UNQ'. The duplicate key value is ( , , 0). ( From tISAMFile::Update ) Thread ID [10600] User [Totvs Services SPED Gateway] IO [854] Tables [51] MaxTables [52] Comment [[JOB_WS] WSServer SOAP REQUEST (NFESBRA:REMESSA3) em 20160413 09:14:51 (running)] Status [] SP [ ] Traced [No] InTran [No] DBEnv [MSSQL/Sped] DBThread [(SPID: 1171) ] Started [13/04/2016 09:05:19] LastIO [] IP [192.168.5.232:5001] RCV [100836] SND [407897] TCBuild [20131204] UPDATE dbo.SPED050 SET D_E_L_E_T_ = ' ',R_E_C_D_E_L_ = 0 WHERE R_E_C_N_O_ = 16375512
Na ocorrência acima, uma aplicação Advpl tentou remover um flag de deleção lógica de um registro, porém o SGDB MSSQL utilizado não permitiu a remoção, pois isto violatia a chave única definida para a tabela em questão.
Error : -803 (23505) (RC=-1) - [IBM][CLI Driver][DB2/LINUXX8664] SQL0803N One or more values in the INSERT statement, UPDATE statement, or foreign key update caused by a DELETE statement are not valid because the primary key, unique constraint or unique index identified by "2" constrains table "DB2.AGL000" from having duplicate values for the index key. SQLSTATE=23505 ( From tISAMFile::Update ) Thread ID [1140918592] User [juliow] IO [464] Tables [24] MaxTables [24] Comment [] Status [] SP [ ] Traced [No] InTran [No] DBEnv [DB2/TOPSSIM] DBThread [(DB2ID: 192.168.3.144.59505.15040614141) ] Started [06/04/2015 11:14:18] LastIO [] IP [192.168.3.76:7059] RCV [25787] SND [51482] TCBuild [20131204] UPDATE DB2.AGL000 SET D_E_L_E_T_ = ' ',R_E_C_D_E_L_ = 0 WHERE R_E_C_N_O_ = 5276140
A ocorrência acima é praticamente a mesma da anterior – violação de índice de chave única – porém registrada pelo SGDB DB2.
Informações de Check-Up na Primeira Conexão
Após subir o serviço do DBAccess, a primeira conexão feita com um Banco de Dados, registra no log de console várias informações sobre o SGDB em questão. Estas informações podem variar entre os tipos de bancos de dados homologados, segue abaixo o exemplo das informações coletadas da conexão com um Banco de Dados MSSQL:
--------------- Initial Connection Check-Up --------------- Database......: MSSQL Environment...: P12TST TableSpace....: [PRIMARY] IndexSpace....: Compression ..: PAGE DB Collation..: Latin1_General_BIN DB Version....: Microsoft SQL Server 2008 R2 (SP3) - 10.50.6000.34 (X64) Aug 19 2014 12:21:34 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) SQL ServerName: TST-DATA279\SQLINST1 SQL Collation.: Latin1_General_BIN SQL Edition...: Enterprise Edition (64-bit) SQL Version...: 10.50.6000.34 SQL P.Level...: SP3 MARS .........: ENABLED ----------------------------------------------------------- --------------- ODBC Connection Check-Up ------------------ ODBC Mapped Functions ......: 1.0 ODBC DBMS Name..............: Microsoft SQL Server ODBC DBMS Version...........: 10.50.6000 ODBC DBMS Database Name.....: P12TST ODBC Data Source Name.......: P12TST ODBC Server Name............: TST-P12\SQLINST1 ODBC Driver Name............: sqlncli10.dll ODBC Driver Version ........: 10.50.4000 ODBC Support ODBC Version...: 03.52 ----------------------------------------------------------- ------------- Generic Connection Check-Up ----------------- Prepared Stmt Cache .......: ENABLED Index Trace ...............: DISABLED ISAM Compatibility Mode ...: ENABLED Connection Access Mode ....: READWRITE (DEFAULT) ISAM DefaultRowCount ......: 40 ISAM FilteredRowCount .....: 250 DB Unified Connection .....: DISABLED (LEGACY) Record Sequence Owner .....: DBACCESS (DEFAULT) -----------------------------------------------------------
Table <table-name> has <numeric-field-count> numeric fields on DBMS, but <numeric-field-adjusted> was adjusted using TOP_FIELD
A mensagem é registrada quando a rotina de tratamento de campos numéricos identifica que a quantidade de campos numéricos ajustados com base na TOP_FIELD difere da quantidade de campos numéricos na estrutura da tabela.