Monitorando eventos

Boa tarde

Estamos com um problema de lentidão ao monitorar eventos de usuário no Elipse E3.
Temos um XObject Bomba que contém várias informações do equipamento, mais de 100 informações.
Para monitorar as alterações feitas pelo sistema, criamos e replicamos para todas as propriedades o seguinte evento:

Sub ChangeValues_ChangeSetPointFrequencia()

	Propriedade = "SpFrequencia"
	NewValue = Bomba.SpFrequencia.Value
	IdEquipamento = Bomba.Id

	Set Consulta = Item("ConsultaBomba")
	Consulta.SetVariableValue "Propriedade", Propriedade
	Consulta.SetVariableValue "NewValue", NewValue
	Consulta.SetVariableValue "IdEquipamento", IdEquipamento
	Consulta.Execute(true)
End Sub

Só para informação, essa ConsultaBomba executa uma StoredProcedure no nosso DB que atualiza a tabela de Bombas com o novo valor e temos uma trigger nessa tabela que grava os campos alterados numa tabela BombaLog.
Temos vários equipamentos pra serem monitorados, em torno de 60 equipamentos com a mesma quantidade de informações cada, mas ao executar a aplicação ocorre o seguinte erro:

Warning W00550: Thread E3Run.E3Runtime {1530} is performing a lengthy operation (34.347 seconds elapsed). Currently at:
  Thread E3Runtime
  DispatchMessage(2034,11796544,0,000300D4)
  KernelProc(29)
  Timer 0FB054C0
  COpcCallbackManager::OnTimer
  COpcCallbackManager::ProcessEvents
  [ChangeValues_ChangeSetPointFrequencia]RunScript
  CE3Query::Execute(-1)
  CDBSrvImpl::DBExecuteSQL("Exec uspAtualizaValorBomba '<%Propriedade%>', <%NewValue%>, <%IdEquipamento%>")
  CDBServer::priv_ImmediateExecute
  CDBEngineClient::ImmediateExecute

E isso afeta completamento o funcionamento da aplicação.
Temos um servidor dedicado para o sistema e usamos OPC.
Alguém teria alguma ideia para implantarmos ou de como resolver o problema de lentidão?

Bom dia Paulo,

Aparentemente esta lentidão está sendo causada pela demora na Stored Procedure.
Se ela for disparada diretamente no console do banco a demora é a mesma?
Já realizou um teste com e sem o trigger?
Experimente também inserir índices nos campos envolvidos no Update, e disparar as operações sem retorno via fila de DB sempre que possível. Ou seja, não usar o “ImmediateExecute” (True) das consultas.

Caso possua consultas que aguardem retorno (SELECT), execute de forma assíncrona para não trancar o aplicativo (método GetAsyncADORecordSet). Maiores informações em http://kb.elipse.com.br/pt-br/questions/5097/.

Se o problema persistir, envie os logs do E3 para delio@elipse.com.br.