Registros que Desaparecen - Ayuda Urgente - Please

04/05/2008 - 15:34 por Gustavo | Informe spam
Hola a todos. Estoy necesitando pistas para resolver un problema que me esta
volviendo loco.

Tengo una aplicacion de gestion de escritorio con con
sql server 2005 SP2 corriendo sobre Win2003 Server SP2.

El problema radica en que por alguna extraña razon
pierde todos los registros que se hayan grabado en un lapso de tiempo corto
( 1 dia o varias hs ) de varias tablas, relacionadas o no entre si por
integridad referencial.

El metodo que uso para verificar si un comprobante se
grabo es guardar los registros y luego hacer la impresion de los documentos
recuperando los datos desde el disco nuevamente con una consulta select. Es
decir que si esta impreso el comprobante significa que primero lo grabo a
disco y luego tuvo que leerlo.

Pues, el problema esta que teniendo los comprobantes
impreso en mano no existen rastos de la informacion en la base de datos de
esos comprobantes o bien de cualquier otro datos que se haya grabado en ese
periodo de tiempo corto.


Me ha pasado 4 veces en un año de funcionamiento, la
primera vez fue hace 3 meses aprox. Esta primera vez detecte que el disco
rigido fallaba, entonces para mi era prueba suficiente con eso.

Seguidamente a esto hice q mi cliente comprara un servidor
IBM. A la semana se repitio de nuevo el problema en el servidor ibm con
windows server 2003. Desaparecio sin ninguna clase de advertencia toda la
informacion del dia, de cualquier tabla como si nunca ubiera sido grabada,
aunque estaban todos los comprobantes impresos como forma de prueba.

En el servidor existe una sola base de datos asi q no es
posible que se este grabando en otra BD del SQL. Tambien he revisado el app
pero no existe ningun procedimiento capaz de hacer una limpieza / borrado de
la informacion o restauracion de un backup.

Asumi que el problema era en la instalacion del Windows 2003
(o sql server 2005) en el nuevo ibm server. Deje otra pc en reemplazo q
tambien tiene w2003 y sql server 2005 pero el problema se ha repetido.

No se cual podria ser el problema, he revisado los logs del
windows y el sql tratando de detectar problemas pero no encuento ninguna
explicacion.

Agradecere Enormemente cualquier colaboracion que me ayude a
comprender y resolver el problema.

Saludos
Atte Gustavo Aquilino
Resistencia - Chaco - Argentina

Preguntas similare

Leer las respuestas

#16 Maxi Accotto
07/05/2008 - 05:55 | Informe spam
Exacto, para mi vienen por ahi los tiros, generalmente cuando alguien dice
el comprobante esta impreso y compara con eso y luego dice que los registros
se borran mm, en un cliente me paso algo identico y no estaban haciendo bien
el commit


Microsoft MVP SQLServer
www.sqltotalconsulting.com
-

"Penta" escribió en el mensaje de
noticias:
Aps. Gracias maxi.
Gustavo, creo que lo que esta pasando es algo asi:

Abre transaccion.
- Realiza Insert o Update
- Realiza la impresion del comprobante
- NO realiza el commit o bien realiza un rollback

Por lo tanto una buena medida seria saber si existen transacciones
abiertas y que no fueron cerradas o incluso saber si fue cerrada pero
con un rollback

Atte.
Penta.
Respuesta Responder a este mensaje
#17 Gustavo
07/05/2008 - 13:51 | Informe spam
Hola , Gracias a todos x sus ayudas / opiniones / etc.

Conslte con gurus q manejan el compilador con el cual trabajo y me dicen, al
igual que uds, que seguro existira algun error en el codigo escrito x el
generador de app, que esta manejando mal las transacciones contra el sql
server.


Saludos
Atte Gustavo

"Maxi Accotto" escribió en el mensaje de
noticias:eysgZY$
Exacto, para mi vienen por ahi los tiros, generalmente cuando alguien dice
el comprobante esta impreso y compara con eso y luego dice que los
registros se borran mm, en un cliente me paso algo identico y no estaban
haciendo bien el commit


Microsoft MVP SQLServer
www.sqltotalconsulting.com
-

"Penta" escribió en el mensaje de
noticias:
Aps. Gracias maxi.
Gustavo, creo que lo que esta pasando es algo asi:

Abre transaccion.
- Realiza Insert o Update
- Realiza la impresion del comprobante
- NO realiza el commit o bien realiza un rollback

Por lo tanto una buena medida seria saber si existen transacciones
abiertas y que no fueron cerradas o incluso saber si fue cerrada pero
con un rollback

Atte.
Penta.



Respuesta Responder a este mensaje
#18 Rafael Cano
07/05/2008 - 19:07 | Informe spam
Lo más seguro entonces es que estés trabajando con Transacciones
implícitas automáticas, con lo que te arriesgas a dejar a medias
procesos, en casos de fallo de luz, etc.

Me explico, en el típico ejemplo de grabación de una factura (tabla
cabecera y detalle), el proceso que creo que está sucediendo es el
siguiente:

1. Grabo cabecera
COMMIT -- Automático
2. Grabo detalle
COMMIT -- Automático

Si se va la luz o hay algún problema puede que sólo se te grabe la
cabecera y no el detalle.(parece que se ha borrado el detalle)

Ahora bien si tienes transacciones explicitas.
1. Grabo cabecera
2. Grabo detalle
3. COMMIT -- Se graba todo
Si se produce un fallo al estar en medio de una transacción, si tienes
la opción que te he comentado de deshacer transacciones al conectar, no
se graba nada, si esta opción está no la has activado, entonces el
servidor graba lo que haya en la transacción (hace COMMIT), con lo que
tienes que no se graba todo lo que se tenía que grabar, y por eso creas
que desaparecen, cuando en realidad, nunca se han grabado en el servidor.


No sé si me he explicado bien, esto de explicar las cosas no es mi fuerte.

La aplicación no tiene funcionalidad para cerrar la conexión
mientras trabaja. La conexión se cierra cuando se sale del app.
Estuve tratando de encontrar donde se configura "deshacer
transacciones al desconectar" pero aun no encuentro. Tienes idea donde
los busco.



Trabajando con VFP, SQL Pass Through, y ODBC, manda la orden:

nCanalODBC = SQLSTRINGCONNECT(".")
= SQLSETPROP(nCanalODBC, "DisconnectRollback", .T.) && Activa ROLLBACK
cuando se desconecta.

en otros lenguajes lo desconozco.


Con respecto al Hard, mira si es la tarjeta de red del PC la que está
fallando.

S

Gustavo escribió:
Rafael, en este cliente se da la particularidad de que el suministro de
ccorriente electrica no es muy regular, entonces compramos una UPS APC
de la cual cuelgo dos PC y el switch.
El sistema estuvo funcionando aprox. 10 meses sin UPS si
problemas aguantandose todos los cortes de luz.
Ahora si ese switch falla, aun con una buena UPS, la verdad
no lo hemos detectado.
Los mas raro es que los fallos han sido cuando trabajaba en
la misma PC.
Sera posible que si el switch fallara aun trabajando en la
misma pc ocurriera este error ???
La aplicacion no tiene funcionalidad para cerrar la conexion
mientras trabaja. La conexion se cierra cuando se sale del app.
Estuve tratando de encontrar donde se configura "deshacer
transacciones al desconectar" pero aun no encuentro. Tienes idea donde
los busco.

Gracias por tu Opinion
Saludos
Atte Gustavo Aquilino.
Resistencia - Chaco - Argentina



"Rafael Cano" escribió en el mensaje de
noticias:
¿No será que en alguna parte de la aplicación te desconectas sin
cerrar la transacción que tienes abierta?

Seguramente tendrás activada la opción de deshacer transacciones al
desconectar.

Gustavo escribió:

Hola a todos. Estoy necesitando pistas para resolver un problema que
me esta volviendo loco.

Tengo una aplicacion de gestion de escritorio
con con sql server 2005 SP2 corriendo sobre Win2003 Server SP2.

El problema radica en que por alguna extraña
razon pierde todos los registros que se hayan grabado en un lapso de
tiempo corto ( 1 dia o varias hs ) de varias tablas, relacionadas o
no entre si por integridad referencial.

El metodo que uso para verificar si un
comprobante se grabo es guardar los registros y luego hacer la
impresion de los documentos recuperando los datos desde el disco
nuevamente con una consulta select. Es decir que si esta impreso el
comprobante significa que primero lo grabo a disco y luego tuvo que
leerlo.

Pues, el problema esta que teniendo los
comprobantes impreso en mano no existen rastos de la informacion en
la base de datos de esos comprobantes o bien de cualquier otro datos
que se haya grabado en ese periodo de tiempo corto.


Me ha pasado 4 veces en un año de funcionamiento,
la primera vez fue hace 3 meses aprox. Esta primera vez detecte que
el disco rigido fallaba, entonces para mi era prueba suficiente con eso.

Seguidamente a esto hice q mi cliente comprara un
servidor IBM. A la semana se repitio de nuevo el problema en el
servidor ibm con windows server 2003. Desaparecio sin ninguna clase
de advertencia toda la informacion del dia, de cualquier tabla como
si nunca ubiera sido grabada, aunque estaban todos los comprobantes
impresos como forma de prueba.

En el servidor existe una sola base de datos asi q no
es posible que se este grabando en otra BD del SQL. Tambien he
revisado el app pero no existe ningun procedimiento capaz de hacer
una limpieza / borrado de la informacion o restauracion de un backup.

Asumi que el problema era en la instalacion del
Windows 2003 (o sql server 2005) en el nuevo ibm server. Deje otra pc
en reemplazo q tambien tiene w2003 y sql server 2005 pero el problema
se ha repetido.

No se cual podria ser el problema, he revisado los logs
del windows y el sql tratando de detectar problemas pero no encuento
ninguna explicacion.

Agradecere Enormemente cualquier colaboracion que me
ayude a comprender y resolver el problema.

Saludos
Atte Gustavo Aquilino
Resistencia - Chaco - Argentina












Salu2 Rafael Cano
rcanop(arroba)yahoo.es
Jaén - España
Villamartín - Cádiz - España
Respuesta Responder a este mensaje
#19 Gustavo
07/05/2008 - 20:26 | Informe spam
Estoy trabajando para solucionar el problema basandome en la hipostesis de
que el app deja trasacciones a mitad de de camino.
es lo que todos me han recalcado al igual que tu.

Saludos
Atte Gustavo

"Rafael Cano" escribió en el mensaje de
noticias:
Lo más seguro entonces es que estés trabajando con Transacciones
implícitas automáticas, con lo que te arriesgas a dejar a medias procesos,
en casos de fallo de luz, etc.

Me explico, en el típico ejemplo de grabación de una factura (tabla
cabecera y detalle), el proceso que creo que está sucediendo es el
siguiente:

1. Grabo cabecera
COMMIT -- Automático
2. Grabo detalle
COMMIT -- Automático

Si se va la luz o hay algún problema puede que sólo se te grabe la
cabecera y no el detalle.(parece que se ha borrado el detalle)

Ahora bien si tienes transacciones explicitas.
1. Grabo cabecera
2. Grabo detalle
3. COMMIT -- Se graba todo
Si se produce un fallo al estar en medio de una transacción, si tienes la
opción que te he comentado de deshacer transacciones al conectar, no se
graba nada, si esta opción está no la has activado, entonces el servidor
graba lo que haya en la transacción (hace COMMIT), con lo que tienes que
no se graba todo lo que se tenía que grabar, y por eso creas que
desaparecen, cuando en realidad, nunca se han grabado en el servidor.


No sé si me he explicado bien, esto de explicar las cosas no es mi fuerte.

> La aplicación no tiene funcionalidad para cerrar la conexión
> mientras trabaja. La conexión se cierra cuando se sale del app.
> Estuve tratando de encontrar donde se configura "deshacer
> transacciones al desconectar" pero aun no encuentro. Tienes idea donde
> los busco.

Trabajando con VFP, SQL Pass Through, y ODBC, manda la orden:

nCanalODBC = SQLSTRINGCONNECT(".")
= SQLSETPROP(nCanalODBC, "DisconnectRollback", .T.) && Activa ROLLBACK
cuando se desconecta.

en otros lenguajes lo desconozco.


Con respecto al Hard, mira si es la tarjeta de red del PC la que está
fallando.

S

Gustavo escribió:
Rafael, en este cliente se da la particularidad de que el suministro de
ccorriente electrica no es muy regular, entonces compramos una UPS APC de
la cual cuelgo dos PC y el switch.
El sistema estuvo funcionando aprox. 10 meses sin UPS si
problemas aguantandose todos los cortes de luz.
Ahora si ese switch falla, aun con una buena UPS, la verdad
no lo hemos detectado.
Los mas raro es que los fallos han sido cuando trabajaba en la
misma PC.
Sera posible que si el switch fallara aun trabajando en la
misma pc ocurriera este error ???
La aplicacion no tiene funcionalidad para cerrar la conexion
mientras trabaja. La conexion se cierra cuando se sale del app.
Estuve tratando de encontrar donde se configura "deshacer
transacciones al desconectar" pero aun no encuentro. Tienes idea donde
los busco.

Gracias por tu Opinion
Saludos
Atte Gustavo Aquilino.
Resistencia - Chaco - Argentina



"Rafael Cano" escribió en el mensaje de
noticias:
¿No será que en alguna parte de la aplicación te desconectas sin cerrar
la transacción que tienes abierta?

Seguramente tendrás activada la opción de deshacer transacciones al
desconectar.

Gustavo escribió:

Hola a todos. Estoy necesitando pistas para resolver un problema que me
esta volviendo loco.

Tengo una aplicacion de gestion de escritorio con
con sql server 2005 SP2 corriendo sobre Win2003 Server SP2.

El problema radica en que por alguna extraña razon
pierde todos los registros que se hayan grabado en un lapso de tiempo
corto ( 1 dia o varias hs ) de varias tablas, relacionadas o no entre
si por integridad referencial.

El metodo que uso para verificar si un comprobante
se grabo es guardar los registros y luego hacer la impresion de los
documentos recuperando los datos desde el disco nuevamente con una
consulta select. Es decir que si esta impreso el comprobante significa
que primero lo grabo a disco y luego tuvo que leerlo.

Pues, el problema esta que teniendo los
comprobantes impreso en mano no existen rastos de la informacion en la
base de datos de esos comprobantes o bien de cualquier otro datos que
se haya grabado en ese periodo de tiempo corto.


Me ha pasado 4 veces en un año de funcionamiento, la
primera vez fue hace 3 meses aprox. Esta primera vez detecte que el
disco rigido fallaba, entonces para mi era prueba suficiente con eso.

Seguidamente a esto hice q mi cliente comprara un
servidor IBM. A la semana se repitio de nuevo el problema en el
servidor ibm con windows server 2003. Desaparecio sin ninguna clase de
advertencia toda la informacion del dia, de cualquier tabla como si
nunca ubiera sido grabada, aunque estaban todos los comprobantes
impresos como forma de prueba.

En el servidor existe una sola base de datos asi q no es
posible que se este grabando en otra BD del SQL. Tambien he revisado el
app pero no existe ningun procedimiento capaz de hacer una limpieza /
borrado de la informacion o restauracion de un backup.

Asumi que el problema era en la instalacion del Windows
2003 (o sql server 2005) en el nuevo ibm server. Deje otra pc en
reemplazo q tambien tiene w2003 y sql server 2005 pero el problema se
ha repetido.

No se cual podria ser el problema, he revisado los logs
del windows y el sql tratando de detectar problemas pero no encuento
ninguna explicacion.

Agradecere Enormemente cualquier colaboracion que me ayude
a comprender y resolver el problema.

Saludos
Atte Gustavo Aquilino
Resistencia - Chaco - Argentina












Salu2 Rafael Cano
rcanop(arroba)yahoo.es
Jaén - España
Villamartín - Cádiz - España
Respuesta Responder a este mensaje
#20 Penta
08/05/2008 - 00:18 | Informe spam
Estimado Gustavo.
Favor cuentanos cuales medidas estas tomando en estos momentos bajo
dicha hipótesis.

De esta forma te podemos dar otras luces y además nos puede servidor
para futuros problemas a todos.

Atte.
Penta.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida