Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Alteração do layout e segregação do conteúdo

O arquivo dbconsole.log, gerado automaticamente pelo

Inclusão de trecho
DBAccess
DBAccess
nopaneltrue
, 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)

Inclusão de trecho
Thread (<thread>) disconnected prematurely! (RECEIVEBLOCK)
Thread (<thread>) disconnected prematurely! (RECEIVEBLOCK)
nopaneltrue

Expandir
Painel

Incluir Página
Thread (<thread>) disconnected prematurely! (RECEIVEBLOCK)
Thread (<thread>) disconnected prematurely! (RECEIVEBLOCK)

Begin TopClient Thread (

<thread>,<IP>,<database>/<dbenv>,<user>,<rmt_user,rmt_machine>)

Quando uma aplicação estabelece uma conexão de dados com o DBAccess, é registrado no dbconsole.log os dados referentes a nova conexão. <thread> indica o número do processo do DBAccess que está atendendo a esta conexão, <IP> indica o IP de origem desta conexão, <database> indica o tipo do banco de dados acessado, <dbenv> informa o nome da conexão com o Banco de Dados, <user> informa o nome do usuário informado na conexão pela API cliente, <rmt_user> indica o nome do usuário de rede que iniciou a aplicação AdvPL, e <rmt_machine> indica o nome da estação que iniciou a aplicação AdvPL que conectou — caso a aplicação tenha sido iniciada pelo SmartClient). 

A informação que mais utilizamos neste contexto é a <tnread>, pois qualquer outra ocorrência relacionada a este processo, enquanto ele estiver sendo executado, ao ser registrado no dbconsolel.log, vai informar o número da <thread> ao qual a ocorrência pertence.

<dbaccess-thread-id>,<appserver-ip>,<database>/<datasource-name>,<user-logged-os/renamed-user-protheus>,<user-logged-os>,<hostname>,DBApi <from-dbapi-version>)

Inclusão de trecho
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>)
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>)
nopaneltrue

Expandir
Painel

Incluir Página
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>)
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>)

End TopClient Thread (<thread>) (IOs <nnn_ios> / RCV <rcv_data> / SND <snd_data> ) 

Quando uma conexão com o DBAccess é encerrada, de forma elegante, é mostrada a mensagem acima, indicando qual a <thread> que foi encerada, a quantidade de I/O realizada pela conexão é mostrada em <nnn_ios>, e a quantidade de dados trafegados pela conexão em <rcv_data> (dados recebidos pelo DBAccess) e <snd_data> (Dados enviados pelo DBAccess).


Exit TopClient Thread (<thread>) [TERMINATED] (IOs <nnn_ios> / RCV <rcv_data> / SND <snd_data> ) 

Similar à mensagem "End TopClient", a "Exit TopClient" indica que houve uma finalização anormal de um processo no DBAccess. Normalmente existe uma razão para isso, registrada um pouco antes desta mensagem.
Os dados informados nesta mensagem são os mesmos da "End Topclient"


[WARNING] Exit with active transaction.

Esta mensagem pode vir imediatamente depois da mensagem "Exit TopClient Tread", e indica que, o processo que foi encerrado ou finalizado estava com uma transação aberta. Neste caso, o encerramento do processo em transação sem que ele tenha recebido um COMMIT explícito pela aplicação AdvPL, faz com que o DBAccess solicite ao SGDB um ROLLBACK, e nenhuma das operações de manutenção nas tabelas realizadas desde o inicio da transação será gravada no SGDB.


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:

Sem 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 :".

Sem Formato
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. 


Sem Formato
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.


Sem Formato
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:

Sem Formato
--------------- 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)
-----------------------------------------------------------

[WARNING][DBACCESS] [Thread <NNNNN>][DATABASE/DSN] (tDBConnection::AdjustFields) Table XXX has N numeric fields on DBMS, but 0 was adjusted using TOP_FIELD.

Esta mensagem é apresentada no console do DBAccess durante a chamada da função responsável por ajustar a precisão numérica para campos AdvPL.
Esta função faz um "de - para" dos campos numéricos da área a ser aberta com a TOP_FIELD.

Abaixo, alguns exemplos de motivos que podem ocasionar esta mensagem:

  • Caso uma tabela seja criada diretamente no Banco de Dados, sem passar pela camada do ERP, responsável pela catálogo da TOP_FIELD.
  • Caso a tabela TOP_FIELD (de uso interno e restrito) tenha passado por uma manutenção direta.