Sei sulla pagina 1di 5

17/4/2018 Reparar base de datos SQL Server con DBCC CHECKDB - NuCanJo Sistemas

 info@nucanjosistemas.es

Seleccionar página
a

Reparar base de datos SQL Server con


DBCC CHECKDB
por nucanjo | Ene 8, 2014 | Reparar Bases de Datos, Scripts, SQL Server, SQL Server 2012 |
6 Comentarios

Anteriormente, vimos que las bases de datos de SQL Server son fiables, pero en ocasiones
pueden romperse o corromperse, de ahí este post.

Este es un ejemplo real que me ha pasado, la base de datos está en estado  RECOVERY
PENDING, debido a que hemos intentado restaurar un backup, y el backup está también
dañado.

1.- Al restaurar el backup, al llegar al 100% nos da un error 9100, avisando que es posible
que haya algún índice corrupto y nos dice que debemos pasar un DBCC CHECKDB para ver
y reparar los daños.

2.- Al intentar acceder desde  Management Studio  a la base de datos que acabamos de
restaurar y que nos ha dado error, al desplegarla sale un mensaje diciendo que la base de
datos no está accesible.

Si nos vamos a las propiedades de la base de datos, vemos que el campo Estado está vacío.
La manera de verlo mediante una consulta de SQL Server sobre la base de datos master.

USE master
GO
SELECT * FROM sys.databases

http://www.nucanjosistemas.es/reparar-base-de-datos-sql-server-dbcc-checkdb/ 1/5
17/4/2018 Reparar base de datos SQL Server con DBCC CHECKDB - NuCanJo Sistemas

Al ejecutar la consulta anterior, salen todas las bases de datos que tiene la instancia de SQL.
Revisamos la línea donde está la base de datos con problema, y en el
campo  state_desc  vemos el estado de la base de datos dañada, en este caso  RECOVERY
PENDING.

3.- Antes de poder hacer nada con la base de datos, ya que no tenemos acceso, para poder
sacar los datos tenemos que cambiar en las Opciones de la base de datos, en Restringir
Acceso, poner la base de datos como SINGLE_USER.

ALTER DATABASE BBDD SET SINGLE_USER WITH ROLLBACK IMMEDIATE;


BEGIN TRANSACTION;

4.- A continuación la cambiamos al modo de  EMERGENCY. Recordemos que este modo
permite a usuarios del grupo  sysadmin, reparar la base de datos, extraer información,
generar scripts, etc.

–Poner la base de datos BBDD en estado de Emergencia


ALTER DATABASE BBDD SET EMERGENCY

5.- Ejecutaremos un DBCC CHECKDB para reparar errores de la base de datos.

 –Checkear y reparar la base de datos


DBCC CHECKDB (‘BBDD’, REPAIR_ALLOW_DATA_LOSS);

En este ejemplo, tenía alguna tabla con errores que reparó automáticamente.

6.- Por último, una vez reparados todos los errores, pondremos la base de datos en estado
MULTI_USER, y la pondremos en producción para que los usuarios puedan utilizarla sin
problema.

 –Poner la base de datos BBDD en estado multi usuario para su acceso


ALTER DATABASE BBDD SET MULTI_USER;

Aquí dejo el script completo o las consultas que hay que ejecutar, para reparar una base de
datos dañada o corrupta.

***********************************************
*************** Script completo ***************
–Poner la base de datos BBDD en modo de usuario único
ALTER DATABASE BBDD SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
BEGIN TRANSACTION;
http://www.nucanjosistemas.es/reparar-base-de-datos-sql-server-dbcc-checkdb/ 2/5
17/4/2018 Reparar base de datos SQL Server con DBCC CHECKDB - NuCanJo Sistemas

–Poner la base de datos BBDD en estado de Emergencia


ALTER DATABASE BBDD SET EMERGENCY

–Checkear y reparar la base de datos


DBCC CHECKDB (‘BBDD’, REPAIR_ALLOW_DATA_LOSS);

–Poner la base de datos BBDD en estado multi usuario para su acceso


ALTER DATABASE BBDD SET MULTI_USER;

Información de Microsoft:
Campos de la tabla sys.databases

6 Comentarios
Ones el 07/02/2017 a las 5:20 pm
Buenas tardes.
Mi problemas es un servidor que se ha quedado ko, no tienen backup
(bbdd.bak) y al tratar de adjuntar la bbdd me da error. He creado una bbdd
con el mismo nombre, he parado el servicio sql , he renombrado copiado el
mdf que tenia y consigo tener la bbdd en el motor adjunta con un ldf nuevo.
Problema que realizo todos los pasos y no consigo que corriga
correctamente los datos, es más he intentado realizar un “REPAIR_REBUILD”
y me indica que la bbdd esta en uso y no puedo ejecutar la acción.
Que podria hacer o como podria solucionar la papeleta ¿?.
Un saludo y gracias por su atención.

nucanjo el 07/02/2017 a las 5:27 pm


Buenas tardes, no siempre es posible arreglar las bases de datos de SQL, a
veces es necesario recurrir a herramientas de terceros y ni con esas. Dime si
quieres la versión de SQL Server y el error exacto que te da por si te puedo
ayudar.
Si no quieres dejarlo en el comentario, hazlo a través del formulario de
contacto o desde el correo que viene arriba de la web.
Saludos.

Hector el 07/07/2017 a las 3:43 am


Excelente post, me fue de gran utilidad. Saludos

http://www.nucanjosistemas.es/reparar-base-de-datos-sql-server-dbcc-checkdb/ 3/5
17/4/2018 Reparar base de datos SQL Server con DBCC CHECKDB - NuCanJo Sistemas

nucanjo el 07/07/2017 a las 7:28 am


Muchas gracias. Me alegra que te haya servido de ayuda.

Jerry el 13/04/2018 a las 4:44 pm


Buen dia disculpa me podrias ayudar tengo una base de datos que estaba
en SQL 2012 pero alguien cambio a SQL 2016 y asi generaron backup ahora
resulta que ninguna de las dos funciona bien ni en la anterior ni en la nueva
y el backup al restaurarlo infla el log en 2 1/2 gb por lo tanto la base esta
lentisima que puedo hacer gracias

nucanjo el 13/04/2018 a las 5:17 pm


Hola, este problema que te pasa no tiene nada que ver con este tema de
reparar la base de datos. Tampoco entiendo bien el problema que tienes,
tendría que ver la base de datos porque así no puedo ayudarte. Lo siento.

Hosting Wordpress

Webs Amigas
El Huertecillo Natural

No Como Huevo

Enlaces Útiles
Antivirus Online Gratis

DNS Report

http://www.nucanjosistemas.es/reparar-base-de-datos-sql-server-dbcc-checkdb/ 4/5
17/4/2018 Reparar base de datos SQL Server con DBCC CHECKDB - NuCanJo Sistemas

Escáner Malware Web

Listas Negras

Open Site Explorer

NuCanJo Sistemas - Mantenimiento informático para empresas

http://www.nucanjosistemas.es/reparar-base-de-datos-sql-server-dbcc-checkdb/ 5/5

Potrebbero piacerti anche