pagina dañada dbcc checkdb

04/03/2009 - 01:51 por op.th | Informe spam
Buenos noches grupo, a ver si alguién especialista en desastres
nucleares me puede ayudar, ya que no sé que más probar. Tengo un cliente
con una base de datos en sql server express 2005 en modo de recuperación
simple y con una página dañada. Dicha página afecta a unas tablas que no
tengo acceso de ninguna manera. He intentado pasar el dbcc checkdb con
el REPAIR_ALLOW_ DATA_LOSS y no me lo arregla. Todo lo que he leído para
recuperar una página se necesita un backup reciente no corrupto, pero no
me la han facilitado porque no la tienen. Si alguién no me ilumina creo
que tengo que crear una nueva bbdd y traspasar todos sus registros,
menos los de esas tablas, claro está, al parecer se puede inicializar
sin problema (menos mal). Hay algún tipo de solución a esto? algún
"truco" que probar??

Muchas gracias anticipadas.

Un saludo

Preguntas similare

Leer las respuestas

#1 Rubén Garrigós
04/03/2009 - 02:58 | Informe spam
Sería de utilidad que mostraras el resultado del DBCC CHECKDB que lanzaste.
¿Hiciste una copia previa de la base de datos antes de lanzarlo? Si no..
quizás ya no hay vuelta atrás.. si algo se estropeó aún más con el DBCC.

Quizás puede que tengas suerte y la página dañada corresponda a un índice
con lo cual podrías probar de hacer un drop y un create del índice para
solucionarlo. Ciertamente ante problemas de corrupción el tener un backup de
donde tirar es lo más recomendable. En principio si tienes una única página
dañada que pertenece a una tabla puede que no te impida el acceso a toda la
tabla. Prueba de realizar una consulta que no implique acceder a todas las
páginas de la tabla (filtra por ejemplo con un TOP(1)) a ver si te devuelve
datos. Quizás puedas llegar a recuperar, filtrando a mano, todos los datos
excepto aquellos que esten en la página dañada. Cuando dices que una página
afecta a unas tablas no me acaba de quedar claro. Una página únicamente
pertenece a un objeto de la base de datos. Quizás tengas más de una página
dañada...

Piensa que milagros no se pueden hacer y con el repair con pérdida de datos
puedes reconstruir ciertas cosas pero si los datos han sido destruidos nada
los va poder devolver a la vida salvo una restauración de un backup.

Rubén Garrigós
Solid Quality Mentors

"op.th" <op.th.esNOSPAMgmail.com> wrote in message
news:
Buenos noches grupo, a ver si alguién especialista en desastres nucleares
me puede ayudar, ya que no sé que más probar. Tengo un cliente con una
base de datos en sql server express 2005 en modo de recuperación simple y
con una página dañada. Dicha página afecta a unas tablas que no tengo
acceso de ninguna manera. He intentado pasar el dbcc checkdb con el
REPAIR_ALLOW_ DATA_LOSS y no me lo arregla. Todo lo que he leído para
recuperar una página se necesita un backup reciente no corrupto, pero no
me la han facilitado porque no la tienen. Si alguién no me ilumina creo
que tengo que crear una nueva bbdd y traspasar todos sus registros, menos
los de esas tablas, claro está, al parecer se puede inicializar sin
problema (menos mal). Hay algún tipo de solución a esto? algún "truco" que
probar??

Muchas gracias anticipadas.

Un saludo
Respuesta Responder a este mensaje
#2 op.th
04/03/2009 - 03:22 | Informe spam
Hola Rubén, muchas gracias por tu respuesta tan rápida. La bbdd la tengo
en mi portatil, es una copia de lo que hay en su servidor y me pasa lo
mismo. Te comento.

Ejecutando esto me da el resultado de abajo...

use master
go
dbcc checkdb (bbdd) with ALL_ERRORMSGS;
go

Mens. 8921, Nivel 16, Estado 1, Línea 1
Comprobación finalizada. Se detectó un error al recopilar hechos.
Posiblemente falta espacio para tempdb o hay una tabla del sistema
incoherente. Vea los errores anteriores.

Mens. 824, Nivel 24, Estado 2, Línea 1
SQL Server detectó un error de E/S de coherencia lógico: suma de
comprobación incorrecta (se esperaba: 0xc7c76e58; se ha obtenido:
0xc7c74e58). Ocurrió durante leer de la página (1:5967) en la base de
datos con Id. 14, desplazamiento 0x00000002e9e000, archivo
'ruta.mdf:MSSQL_DBCC14'. El registro de errores de SQL Server o el
registro de sucesos del sistema puede contener mensajes adicionales con
más detalles. Se trata de una condición de error grave que amenaza a la
integridad de la base de datos y que debe corregirse inmediatamente.
Ejecute una comprobación de coherencia completa de la base de datos
(DBCC CHECKDB). Este error se puede haber originado por muchos factores;
para obtener más información, vea los Libros en pantalla de SQL Server.

Decía que me afecta a más tablas porque son unas cuantas a las que no
puedo acceder. Si le hago un :

DBCC TRACEON (3604);
GO
DBCC PAGE (byl_c01, 1, 5967, 3);
GO

solamente en los dumps me salen índices y estadísticas, pero luego si
recorro todas las tablas para saber el número de registros, hay unas
cuantas tablas que no me deja acceder. No sé...

Muchas gracias de nuevo.



Rubén Garrigós escribió:
Sería de utilidad que mostraras el resultado del DBCC CHECKDB que
lanzaste. ¿Hiciste una copia previa de la base de datos antes de
lanzarlo? Si no.. quizás ya no hay vuelta atrás.. si algo se estropeó
aún más con el DBCC.

Quizás puede que tengas suerte y la página dañada corresponda a un
índice con lo cual podrías probar de hacer un drop y un create del
índice para solucionarlo. Ciertamente ante problemas de corrupción el
tener un backup de donde tirar es lo más recomendable. En principio si
tienes una única página dañada que pertenece a una tabla puede que no te
impida el acceso a toda la tabla. Prueba de realizar una consulta que no
implique acceder a todas las páginas de la tabla (filtra por ejemplo con
un TOP(1)) a ver si te devuelve datos. Quizás puedas llegar a recuperar,
filtrando a mano, todos los datos excepto aquellos que esten en la
página dañada. Cuando dices que una página afecta a unas tablas no me
acaba de quedar claro. Una página únicamente pertenece a un objeto de la
base de datos. Quizás tengas más de una página dañada...

Piensa que milagros no se pueden hacer y con el repair con pérdida de
datos puedes reconstruir ciertas cosas pero si los datos han sido
destruidos nada los va poder devolver a la vida salvo una restauración
de un backup.

Rubén Garrigós
Solid Quality Mentors

"op.th" <op.th.esNOSPAMgmail.com> wrote in message
news:
Buenos noches grupo, a ver si alguién especialista en desastres
nucleares me puede ayudar, ya que no sé que más probar. Tengo un
cliente con una base de datos en sql server express 2005 en modo de
recuperación simple y con una página dañada. Dicha página afecta a
unas tablas que no tengo acceso de ninguna manera. He intentado pasar
el dbcc checkdb con el REPAIR_ALLOW_ DATA_LOSS y no me lo arregla.
Todo lo que he leído para recuperar una página se necesita un backup
reciente no corrupto, pero no me la han facilitado porque no la
tienen. Si alguién no me ilumina creo que tengo que crear una nueva
bbdd y traspasar todos sus registros, menos los de esas tablas, claro
está, al parecer se puede inicializar sin problema (menos mal). Hay
algún tipo de solución a esto? algún "truco" que probar??

Muchas gracias anticipadas.

Un saludo



Respuesta Responder a este mensaje
#3 Rubén Garrigós
04/03/2009 - 03:47 | Informe spam
Posiblemente el problema es que no está detectando toda la corrupción debido
a un problema con las tablas del sistema lo cual tiene mal arreglo. Si te
fijas el DBCC al principio te dice " Se detectó un error al recopilar
hechos. Posiblemente falta espacio para tempdb o hay una tabla del sistema
incoherente." Imagino que problemas de tempdb no tienes en tu máquina por lo
que me inclino más por lo segundo.

Prueba sacar el DBCC PAGE pero con el parámetro final a 1 en vez de a 3.
Fijate si los slots te dice que son INDEX_RECORD, PRIMARY_RECORD, etc. Si
todo lo que tienes son índices y estadísticas como comentas puedes probar de
cargarte todos los índices y estadísticas de las tablas. Para no hacerlo a
mano puedes tirar del script de:
http://sqlblog.com/blogs/jonathan_k...cript.aspx

Quizás con eso te permita acceder a los datos. La verdad es que pinta mal la
cosa, pero bueno, por intentarlo que no se diga.

Rubén Garrigós
Solid Quality Mentors

"op.th" <op.th.esNOSPAMgmail.com> wrote in message
news:
Hola Rubén, muchas gracias por tu respuesta tan rápida. La bbdd la tengo
en mi portatil, es una copia de lo que hay en su servidor y me pasa lo
mismo. Te comento.

Ejecutando esto me da el resultado de abajo...

use master
go
dbcc checkdb (bbdd) with ALL_ERRORMSGS;
go

Mens. 8921, Nivel 16, Estado 1, Línea 1
Comprobación finalizada. Se detectó un error al recopilar hechos.
Posiblemente falta espacio para tempdb o hay una tabla del sistema
incoherente. Vea los errores anteriores.

Mens. 824, Nivel 24, Estado 2, Línea 1
SQL Server detectó un error de E/S de coherencia lógico: suma de
comprobación incorrecta (se esperaba: 0xc7c76e58; se ha obtenido:
0xc7c74e58). Ocurrió durante leer de la página (1:5967) en la base de
datos con Id. 14, desplazamiento 0x00000002e9e000, archivo
'ruta.mdf:MSSQL_DBCC14'. El registro de errores de SQL Server o el
registro de sucesos del sistema puede contener mensajes adicionales con
más detalles. Se trata de una condición de error grave que amenaza a la
integridad de la base de datos y que debe corregirse inmediatamente.
Ejecute una comprobación de coherencia completa de la base de datos (DBCC
CHECKDB). Este error se puede haber originado por muchos factores; para
obtener más información, vea los Libros en pantalla de SQL Server.

Decía que me afecta a más tablas porque son unas cuantas a las que no
puedo acceder. Si le hago un :

DBCC TRACEON (3604);
GO
DBCC PAGE (byl_c01, 1, 5967, 3);
GO

solamente en los dumps me salen índices y estadísticas, pero luego si
recorro todas las tablas para saber el número de registros, hay unas
cuantas tablas que no me deja acceder. No sé...

Muchas gracias de nuevo.



Rubén Garrigós escribió:
Sería de utilidad que mostraras el resultado del DBCC CHECKDB que
lanzaste. ¿Hiciste una copia previa de la base de datos antes de
lanzarlo? Si no.. quizás ya no hay vuelta atrás.. si algo se estropeó aún
más con el DBCC.

Quizás puede que tengas suerte y la página dañada corresponda a un índice
con lo cual podrías probar de hacer un drop y un create del índice para
solucionarlo. Ciertamente ante problemas de corrupción el tener un backup
de donde tirar es lo más recomendable. En principio si tienes una única
página dañada que pertenece a una tabla puede que no te impida el acceso
a toda la tabla. Prueba de realizar una consulta que no implique acceder
a todas las páginas de la tabla (filtra por ejemplo con un TOP(1)) a ver
si te devuelve datos. Quizás puedas llegar a recuperar, filtrando a mano,
todos los datos excepto aquellos que esten en la página dañada. Cuando
dices que una página afecta a unas tablas no me acaba de quedar claro.
Una página únicamente pertenece a un objeto de la base de datos. Quizás
tengas más de una página dañada...

Piensa que milagros no se pueden hacer y con el repair con pérdida de
datos puedes reconstruir ciertas cosas pero si los datos han sido
destruidos nada los va poder devolver a la vida salvo una restauración de
un backup.

Rubén Garrigós
Solid Quality Mentors

"op.th" <op.th.esNOSPAMgmail.com> wrote in message
news:
Buenos noches grupo, a ver si alguién especialista en desastres
nucleares me puede ayudar, ya que no sé que más probar. Tengo un cliente
con una base de datos en sql server express 2005 en modo de recuperación
simple y con una página dañada. Dicha página afecta a unas tablas que no
tengo acceso de ninguna manera. He intentado pasar el dbcc checkdb con
el REPAIR_ALLOW_ DATA_LOSS y no me lo arregla. Todo lo que he leído para
recuperar una página se necesita un backup reciente no corrupto, pero no
me la han facilitado porque no la tienen. Si alguién no me ilumina creo
que tengo que crear una nueva bbdd y traspasar todos sus registros,
menos los de esas tablas, claro está, al parecer se puede inicializar
sin problema (menos mal). Hay algún tipo de solución a esto? algún
"truco" que probar??

Muchas gracias anticipadas.

Un saludo



Respuesta Responder a este mensaje
#4 op.th
04/03/2009 - 04:15 | Informe spam
Son todos primary_record, y debe ser grave porque tampoco me deja
acceder a sysindexes ni a sysstats, rompen al poco tiempo :(.

Como no edite los ficheros en hexadecimal me parece a mi que esto no
tiene solución.

Muchas gracias por todo Rubén.



Rubén Garrigós escribió:
Posiblemente el problema es que no está detectando toda la corrupción
debido a un problema con las tablas del sistema lo cual tiene mal
arreglo. Si te fijas el DBCC al principio te dice " Se detectó un error
al recopilar hechos. Posiblemente falta espacio para tempdb o hay una
tabla del sistema incoherente." Imagino que problemas de tempdb no
tienes en tu máquina por lo que me inclino más por lo segundo.

Prueba sacar el DBCC PAGE pero con el parámetro final a 1 en vez de a 3.
Fijate si los slots te dice que son INDEX_RECORD, PRIMARY_RECORD, etc.
Si todo lo que tienes son índices y estadísticas como comentas puedes
probar de cargarte todos los índices y estadísticas de las tablas. Para
no hacerlo a mano puedes tirar del script de:
http://sqlblog.com/blogs/jonathan_k...cript.aspx


Quizás con eso te permita acceder a los datos. La verdad es que pinta
mal la cosa, pero bueno, por intentarlo que no se diga.

Rubén Garrigós
Solid Quality Mentors

"op.th" <op.th.esNOSPAMgmail.com> wrote in message
news:
Hola Rubén, muchas gracias por tu respuesta tan rápida. La bbdd la
tengo en mi portatil, es una copia de lo que hay en su servidor y me
pasa lo mismo. Te comento.

Ejecutando esto me da el resultado de abajo...

use master
go
dbcc checkdb (bbdd) with ALL_ERRORMSGS;
go

Mens. 8921, Nivel 16, Estado 1, Línea 1
Comprobación finalizada. Se detectó un error al recopilar hechos.
Posiblemente falta espacio para tempdb o hay una tabla del sistema
incoherente. Vea los errores anteriores.

Mens. 824, Nivel 24, Estado 2, Línea 1
SQL Server detectó un error de E/S de coherencia lógico: suma de
comprobación incorrecta (se esperaba: 0xc7c76e58; se ha obtenido:
0xc7c74e58). Ocurrió durante leer de la página (1:5967) en la base de
datos con Id. 14, desplazamiento 0x00000002e9e000, archivo
'ruta.mdf:MSSQL_DBCC14'. El registro de errores de SQL Server o el
registro de sucesos del sistema puede contener mensajes adicionales
con más detalles. Se trata de una condición de error grave que amenaza
a la integridad de la base de datos y que debe corregirse
inmediatamente. Ejecute una comprobación de coherencia completa de la
base de datos (DBCC CHECKDB). Este error se puede haber originado por
muchos factores; para obtener más información, vea los Libros en
pantalla de SQL Server.

Decía que me afecta a más tablas porque son unas cuantas a las que no
puedo acceder. Si le hago un :

DBCC TRACEON (3604);
GO
DBCC PAGE (byl_c01, 1, 5967, 3);
GO

solamente en los dumps me salen índices y estadísticas, pero luego si
recorro todas las tablas para saber el número de registros, hay unas
cuantas tablas que no me deja acceder. No sé...

Muchas gracias de nuevo.



Rubén Garrigós escribió:
Sería de utilidad que mostraras el resultado del DBCC CHECKDB que
lanzaste. ¿Hiciste una copia previa de la base de datos antes de
lanzarlo? Si no.. quizás ya no hay vuelta atrás.. si algo se estropeó
aún más con el DBCC.

Quizás puede que tengas suerte y la página dañada corresponda a un
índice con lo cual podrías probar de hacer un drop y un create del
índice para solucionarlo. Ciertamente ante problemas de corrupción el
tener un backup de donde tirar es lo más recomendable. En principio
si tienes una única página dañada que pertenece a una tabla puede que
no te impida el acceso a toda la tabla. Prueba de realizar una
consulta que no implique acceder a todas las páginas de la tabla
(filtra por ejemplo con un TOP(1)) a ver si te devuelve datos. Quizás
puedas llegar a recuperar, filtrando a mano, todos los datos excepto
aquellos que esten en la página dañada. Cuando dices que una página
afecta a unas tablas no me acaba de quedar claro. Una página
únicamente pertenece a un objeto de la base de datos. Quizás tengas
más de una página dañada...

Piensa que milagros no se pueden hacer y con el repair con pérdida de
datos puedes reconstruir ciertas cosas pero si los datos han sido
destruidos nada los va poder devolver a la vida salvo una
restauración de un backup.

Rubén Garrigós
Solid Quality Mentors

"op.th" <op.th.esNOSPAMgmail.com> wrote in message
news:
Buenos noches grupo, a ver si alguién especialista en desastres
nucleares me puede ayudar, ya que no sé que más probar. Tengo un
cliente con una base de datos en sql server express 2005 en modo de
recuperación simple y con una página dañada. Dicha página afecta a
unas tablas que no tengo acceso de ninguna manera. He intentado
pasar el dbcc checkdb con el REPAIR_ALLOW_ DATA_LOSS y no me lo
arregla. Todo lo que he leído para recuperar una página se necesita
un backup reciente no corrupto, pero no me la han facilitado porque
no la tienen. Si alguién no me ilumina creo que tengo que crear una
nueva bbdd y traspasar todos sus registros, menos los de esas
tablas, claro está, al parecer se puede inicializar sin problema
(menos mal). Hay algún tipo de solución a esto? algún "truco" que
probar??

Muchas gracias anticipadas.

Un saludo








email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida