Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-09-2004
ander ander is offline
Miembro
 
Registrado: may 2003
Posts: 56
Poder: 21
ander Va por buen camino
General SQL Error

Despues de dos años conectado a un servidor con Oracle Database,el programa de Delphi ha empezado a dar un error.
General SQL Error.
[Microsoft][ODBC SQL Server Driver][SQL Server]Transaction(Process Id 18 was deadlocked on lock ,resources with another process and has been chosen as the deadlock victim.Rerun the transaction.EDBEngineError.
Podríais explicarme porque puede suceder esto y como puedo solucionarlo.
Gracias
Responder Con Cita
  #2  
Antiguo 09-09-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por ander
Transaction(Process Id 18 was deadlocked on lock ,resources with another process and has been chosen as the deadlock victim.Rerun the transaction.EDBEngineError.
Bueno el error parece claro, ¡¡DEADLOCK!! (palabra maldita) y eso quiere decir que ¡¡Tienes un problema!!
Normalmete el Deadlock se produce cuando dos transacciones interfieren la una con la otra y ambas quedan esperando a que la otra acabe, de forma que ninguna puede acabar ya que ambas están esperando lo mismo.
(1) Si no has tocado nada de código que altere el comportamiento, sólo se me ocurre que con el tiempo, y el crecimiento de las tablas (y por lo tanto el incremento de tiempo en las SQL), dos consultas que antes tenías y que no se pisaban (no interferían) ahora se estén "pisando" y provoquen el error.

La solución es que busques qué dos operaciones te están produciendo el DeadLock, puede ser el mismo proceso que lanzan dos personas, o dos procesos diferentes, pero que utilizan tablas comunes y una vez identificado, tendrás que modificar el código.

(2) Si has tocado código ultimamente, revisa modificaciones sobre procesos que alteren las mismas tablas.

Ya se que la explicación es muy genérica, pero sin más detalles...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 09-09-2004
ander ander is offline
Miembro
 
Registrado: may 2003
Posts: 56
Poder: 21
ander Va por buen camino
Deadlook

En cuanto a modificar el código ¿a que te refieres?.
Por lo que me has explicado, se que se estan pisando,pero ¿como puedo hacer que no se pisen o que no se interfieran ?
Es la primera vez que se me dá este caso y no se de donde agarrarlo.
Responder Con Cita
  #4  
Antiguo 09-09-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por ander
En cuanto a modificar el código ¿a que te refieres?.
Por lo que me has explicado, se que se estan pisando,pero ¿como puedo hacer que no se pisen o que no se interfieran ?
Es la primera vez que se me dá este caso y no se de donde agarrarlo.
Pues eso; Tampoco puedo ser mucho más concreto sin conocer el código, pero está claro que el error no va a desaparecer sólo; Una vez tengas localizado el error y el proceso o procesos que intervienen y que están provocando el error, pues deberás revisar cómo se gestionan las transacciones en ese trozo de código y si eso es correcto, pues intentar hacer el proceso de alguna otra forma (por trozos, subdividirlo,...);
Ya se que la explicación es muy genérica, pero es que la solución a un problema de DeadLock no es en absoluto genérica, sino todo lo contrario (depende del código que lo está provocando).
Lo más importante es que consigas saber de dónde viene el error y reproducirlo (qué dos procesos al mismo tiempo lo provocan, o qué proceso lanzado lo provoca, o qué dos cosas realizadas consecutivamente lo provocan,...)
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 10:42:39.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi