viernes, 29 de agosto de 2008

Pérdida de conexión intermitente entre Windows 2003 Server y SQL Server

Al final se corrobora que no sólo de soft vivimos sino que también tenemos que bajar a los infiernos del hard para solventar problemas extraños que te hacen calentarte la cabeza y discutir con tus compañeros y clientes.

En fin, a los que os pueda surgir este error:
[DBNETLIB]Error general de red. Consulte la documentación de red

Con esta configuración:
Windows 2003 Server con SP2 y SQL Server 2005 con SP2 y equipados con una tarjeta de red modelo NC373i. Como veréis no sólo se puede producir con esta configuración (expongo esta por ser la que me ha originado el dolor de cabeza :) )

La solución que nos aporta Microsoft la tenéis en este enlace:
http://support.microsoft.com/kb/942861

Por supuesto recordaros que si aplicando las recomendaciones que nos ofrece Microsoft no conseguimos solucionarlo, debemos pasar a la acción y comprobar que nuestras bases de datos estén libres de errores de consistencia.

viernes, 8 de agosto de 2008

REPAIR_ALLOW_DATA_LOSS y el daño que podemos causar en nuestra BD.

La gran mayoría de las veces que nos enfrentemos a un problema en nuestra base de datos la solución que nos ofrece el comando DBCC CHECKDB será que usemos la opción REPAIR_ALLOW_DATA_LOSS, pues bien, antes de lanzarnos de cabeza debemos tener en cuenta los riesgos que podemos sufrir.

REPAIR_ALLOW_DATA_LOSS es un recurso rápido para poner en funcionamiento nuestra base de datos, el propósito no es guardar los datos de los usuarios, sino recuperar la consistencia estructural de la BD, tan rápido como sea posible de una manera correcta. Pero en este proceso para conseguir la consistencia borrará tanto datos como páginas corruptas.

Imaginemos el siguiente escenario, el DBA de nuestra entidad bancaria no realiza los backups necesarios para preservar la información y recuperarse de un desastre. El servidor sufre un apagón y resulta dañado un disco duro no pudiendo guardar correctamente una página, causando un TORN PAGE. Desafortunadamente en esa página está nuestra cuenta corriente. Como el DBA no dispone de copias de seguridad realiza una reparación con REPAIR_ALLOW_DATA_LOSS. Como resultado de esta reparación la página dañada resulta borrada!!! Y con ella nuestra cuenta corriente y la muchos otros clientes!!! xDDD