[firebase-br] FB 5.0.2.1532 - Erro operation
Osvaldo G. Da Cruz Júnior - NetNúcleo
junior em netnucleo.com.br
Quarta Janeiro 22 10:16:28 -03 2025
Gladiston,
Realmente estava utilizando o "copiar / colar" e nunca tinha percebido que
tinha esse controle na transação.
Utilizo o básico de uma conexão, ou seja, sem utilizar o *FbTransaction
transaction = connection.BeginTransaction()*
Qual método devo utilizar apenas para fazer consulta? *IsolationLevel*.*?*
Veja os detalhes:
private void CarregaGrid()
{
string stringConexao = "Data
Source=127.0.0.1;Port=3055;User=SYSDBA;Password=masterkey;charset=WIN1252;Dialect=3;Database=c:\Arquivos\BANCO.FDB"
using (FbConnection conexao = new FbConnection(stringConexao))
try
{
StringBuilder sql = new StringBuilder();
sql.Append("select PAI, PAI_NOME, MAE, MAE_NOME,
PROBABILIDADE ");
sql.Append(" from SP_DNA_LAUDO_RETESTE_11(@LOTE_ANIMAL,
@FINALIDADE, @QUALIFICACAO)");
FbCommand comando = new FbCommand(sql.ToString(), conexao);
comando.Parameters.Add("@LOTE_ANIMAL", hfdLoteAnimal.Value);
comando.Parameters.Add("@FINALIDADE",
ddlFinalidade.SelectedValue);
comando.Parameters.Add("@QUALIFICACAO",
ddlQualificacao.SelectedValue);
conexao.Open();
FbDataAdapter adapter = new FbDataAdapter(comando);
DataTable dt = new DataTable();
adapter.Fill(dt);
Session.Add("TEMP_SESSAO_GRIPADRAO_DT", dt);
griPadrao.DataSource = dt;
griPadrao.DataBind();
griPadrao.SelectedIndex = -1;
}
catch (Exception erro)
{
string error = erro.Message;
if (error.Contains("MENSAGEM")) { Master.ShowMessage(error);
} else { Master.ShowMessage("Seleção de re-teste não pode ser realizada.");
}
Log logErro = new Log();
logErro.GravaLogFile(Session["Sistema"].ToString(),
Session["Usuario"].ToString(), "ERRO", "ID: " + hfdLoteAnimal.Value + " -
Finalidade: " + ddlFinalidade.SelectedValue + " - Qualificação: " +
ddlQualificacao.SelectedValue + " - Erro: " + error, "selecao de re-teste -
grid", "selecionar", Request.UserHostAddress);
}
finally
{
conexao.Close();
}
}
*** Esse é o conteúdo da procedure no FB 5:
*/* Já percebi que preciso melhorar o processo de fazer o SELECT, mas
gostaria de entender o motivo do erro. */*
SET TERM ^ ;
create or alter procedure SP_DNA_LAUDO_RETESTE_11 (
I_LOTE_ANIMAL DM_BIGINT,
I_QUALIFICACAO DM_SMALLINT)
returns (
PAI DM_BIGINT,
PAI_NOME DM_VARCHAR_255,
MAE DM_BIGINT,
MAE_NOME DM_VARCHAR_255,
PROBABILIDADE numeric(15,8))
as
declare variable V_MACHO integer;
declare variable V_FEMEA integer;
begin
select count(SEXO) from DNA_LAUDO_RETESTE where
LOTE_ANIMAL=:I_LOTE_ANIMAL and SEXO='M' into :V_MACHO;
select count(SEXO) from DNA_LAUDO_RETESTE where
LOTE_ANIMAL=:I_LOTE_ANIMAL and SEXO='F' into :V_FEMEA;
if (:V_MACHO <= 0) then
exception MENSAGEM 'É necessário ter no mínimo um animal Macho para
análise.#FIM#';
if (:V_FEMEA <= 0) then
exception MENSAGEM 'É necessário ter no mínimo um animal Fêmea para
análise.#FIM#';
for
select PAI, PAI_NOME, MAE, MAE_NOME, PROBABILIDADE
from (
select PAI, PAI_NOME, MAE, MAE_NOME, count(coalesce(PROBABILIDADE,0))
PROBABILIDADE
from (
select
RT.ANIMAL PAI,
ANI_PAI.NOME || case when ANI_PAI.REGISTRO is not null then
' ['||trim(ANI_PAI.REGISTRO)||']' else '' end as PAI_NOME,
RTF.ANIMAL MAE,
ANI_MAE.NOME || case when ANI_MAE.REGISTRO is not null then
' ['||trim(ANI_MAE.REGISTRO)||']' else '' end as MAE_NOME,
(select PROBABILIDADE from
SP_PROBABILIDADE_TRIO(PER.MARCADOR, coalesce(PER.ALELO1,0),
coalesce(PER.ALELO2,0), coalesce(MAE.ALELO1,0), coalesce(MAE.ALELO2,0),
coalesce(PAI.ALELO1,0), coalesce(PAI.ALELO2,0))) PROBABILIDADE
from DNA_MARCADOR MAR
left join DNA_LAUDO_RETESTE RT on RT.LOTE_ANIMAL=:I_LOTE_ANIMAL
and RT.SEXO='M'
left join DNA_LAUDO_RETESTE RTF on RTF.LOTE_ANIMAL=RT.LOTE_ANIMAL
and RTF.SEXO='F'
left join DNA_PERMANENTE PAI on PAI.ANIMAL=RT.ANIMAL and
PAI.marcador=MAR.MARCADOR
left join DNA_PERMANENTE MAE on MAE.ANIMAL=RTF.ANIMAL AND
MAE.MARCADOR=MAR.MARCADOR
left join DNA_LOTE_ANIMAL LOT_ANI on
LOT_ANI.LOTE_ANIMAL=RT.LOTE_ANIMAL
left join DNA_TRIAGEM_ANIMAL TRI_ANI on
TRI_ANI.TRIAGEM_ANIMAL=LOT_ANI.TRIAGEM_ANIMAL
left join PAD_ANIMAL ANI_PAI on ANI_PAI.ANIMAL=RT.ANIMAL
left join PAD_ANIMAL ANI_MAE on ANI_MAE.ANIMAL=RTF.ANIMAL
left join PAD_ANIMAL ANI on ANI.ANIMAL=TRI_ANI.ANIMAL
-- 06/10/2022 - Douglas solicitou para comparar sobre o resultado e não do
arquivo permanente
left join DNA_LOTE_RESULTADO PER on PER.LOTE_ANIMAL =
:I_LOTE_ANIMAL and PER.MARCADOR = MAR.MARCADOR
where MAR.situacao = 'A'
and RT.APTO = 'S' AND RTF.APTO = 'S'
and (((:I_QUALIFICACAO=99)
or ((:I_QUALIFICACAO=15) and (RT.QUALIFICA >= 15))
or ((:I_QUALIFICACAO=14) and (RT.QUALIFICA >= 14))
or ((:I_QUALIFICACAO=13) and (RT.QUALIFICA >= 13))
or ((:I_QUALIFICACAO=12) and (RT.QUALIFICA >= 12))
or ((:I_QUALIFICACAO=11) and (RT.QUALIFICA >= 11))
or ((:I_QUALIFICACAO=10) and (RT.QUALIFICA >= 10))
or ((:I_QUALIFICACAO=9) and (RT.QUALIFICA >= 9))
or ((:I_QUALIFICACAO=8) and (RT.QUALIFICA >= 8)))
or ((:I_QUALIFICACAO=99)
or ((:I_QUALIFICACAO=15) and (RTF.QUALIFICA >= 15))
or ((:I_QUALIFICACAO=14) and (RTF.QUALIFICA >= 14))
or ((:I_QUALIFICACAO=13) and (RTF.QUALIFICA >= 13))
or ((:I_QUALIFICACAO=12) and (RTF.QUALIFICA >= 12))
or ((:I_QUALIFICACAO=11) and (RTF.QUALIFICA >= 11))
or ((:I_QUALIFICACAO=10) and (RTF.QUALIFICA >= 10))
or ((:I_QUALIFICACAO=9) and (RTF.QUALIFICA >= 9))
or ((:I_QUALIFICACAO=8) and (RTF.QUALIFICA >= 8))))
and (
(coalesce(PER.ALELO1,0)>0)
or ((coalesce(PER.ALELO2,0)>0))
or ((coalesce(MAE.ALELO1,0)>0))
or ((coalesce(MAE.ALELO2,0)>0))
or ((coalesce(PAI.ALELO1,0)>0))
or ((coalesce(PAI.ALELO2,0)>0))
)
order by TRI_ANI.ANIMAL, RT.ANIMAL, RTF.ANIMAL, MAR.MARCADOR
)
where PROBABILIDADE > 0
group by 1, 2, 3, 4
)
where ((:I_QUALIFICACAO=99)
or ((:I_QUALIFICACAO=15) and (PROBABILIDADE >= 15))
or ((:I_QUALIFICACAO=14) and (PROBABILIDADE >= 14))
or ((:I_QUALIFICACAO=13) and (PROBABILIDADE >= 13))
or ((:I_QUALIFICACAO=12) and (PROBABILIDADE >= 12))
or ((:I_QUALIFICACAO=11) and (PROBABILIDADE >= 11))
or ((:I_QUALIFICACAO=10) and (PROBABILIDADE >= 10))
or ((:I_QUALIFICACAO=9) and (PROBABILIDADE >= 9))
or ((:I_QUALIFICACAO=8) and (PROBABILIDADE >= 8)))
order by PROBABILIDADE desc,MAE_NOME,PAI_NOME
into :PAI,
:PAI_NOME,
:MAE,
:MAE_NOME,
:PROBABILIDADE
do
suspend;
end^
SET TERM ; ^
Osvaldo *Júnior* <junior em netnucleo.com.br>
Sócio Proprietário / Analista de Sistemas
(34)3077-1573 / (34) 9.9269-3333
Skype: osvaldo.junior
NetNúcleo.com.br <http://www.netnucleo.com.br> NetBovino.com.br
<http://www.netbovino.com.br>
Em ter., 21 de jan. de 2025 às 15:11, Gladiston Santana <
gladiston.santana em gmail.com> escreveu:
> Dá uma olhada no seu programa para ver qual o método de transação que
> anda usando, eu vejo em alguns grupos o pessoal copiando/colando sem nem
> saber o que é cada tipo de transação. Por exemplo, se usar Serializable,
> vc mata qualquer paralelismo e concorrência que exista, fica todo mundo
> aguardando quem abriu primeiro encerrar a transação (ou exceder o timeout
> com uma mensagem possivelmente aleatória como a sua).
>
>
> Em qui., 16 de jan. de 2025 às 16:29, Osvaldo G. Da Cruz Júnior -
> NetNúcleo via lista <lista em firebase.com.br> escreveu:
>
>> Prezados,
>>
>> Informações do servidor:
>>
>> OS: Windows Server 2022
>> Server: running (Super Server)
>> Version:
>>
>> *WI-V5.0.2.1532 Firebird 5.0 HQbirdPrograma desenvolvido em C# Asp.net
>> Framework 4.8*Firebird ADO.NET data provider - Versão 9.1.1.
>> Conexão string: Data
>>
>> Source=localhost;Port=3050;User=SYSDBA;Password=masterkey;charset=WIN1252;Dialect=3;Database=c:\Arquivos\BANCO.FDB;Packet
>> Size=8192"
>> Tamanho da base: 24GB
>>
>> Erro: " *operation=-1964273576 Nome do parâmetro: operation*"
>>
>> Percebi que o erro ocorre uma consulta que está demorando bastante (3
>> minutos) e realmente preciso otimizá-la, mas gostaria de entender e ter
>> mais informações sobre a causa real. Se o erro é do Firebird ou do
>> Provider.
>>
>> Quando o erro ocorre, todo o sistema começa também a apresentar problemas
>> em todas as consultas ao banco de dados, mas com mensagem "aleatórias' do
>> operation. Exemplo: "
>> * operation=719761414Nome do parâmetro: operation" *ou
>> *"operation=-1723256783 Nome do parâmetro: operation"*
>>
>> * Este erro também ocorreu no Firebird 2.1 e foi um dos motivos que levou
>> a
>> fazer a atualização para o FB 5.
>>
>>
>>
>> Osvaldo *Júnior* <junior em netnucleo.com.br>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>> http://www.firebase.com.br/fb/artigo.php?id=1107
>> Para consultar mensagens antigas:
>> http://www.firebase.com.br/pesquisa_lista.html
>>
>
>
> --
> --
>
Mais detalhes sobre a lista de discussão lista