Problemas con Base de datos en Suspect
- Si la base de datos es de consultas, puede colocar la base de datos como solo lectura y los usuarios pueden tener acceso a la misma.
- SQL Server puede recuperar la base de datos automáticamente si tiene una falla mínima, puede ver este mensaje al lado de la misma (Recovery).
- Otra forma es darle un Detach a la DB y un Attach nuevamente para recuperar la base de datos.
- Si ninguna de estas acciones funciona y no tiene un backup actualizado puede probar con este procedure "sp_resetstatus [ @DBName = ] 'database'" que resetea el estatus de la base de datos en el sysdatabase y reparar los daños que tenga la base de datos en caso que se pueda reparar.
Si no tienen acceso a este procedures, aquí les dejo los fuentes con el que pueden crearlo y ejecutarlo:
IF EXISTS ( SELECT * from sysobjects where name = 'sp_resetstatus' )
DROP PROCEDURE sp_resetstatus
GO
CREATE PROC sp_resetstatus @dbname varchar(30) AS
DECLARE @msg varchar(80)
IF @@trancount > 0
BEGIN
PRINT 'Can''t run sp_resetstatus from within a transaction.'
RETURN (1)
END
IF suser_id() != 1
BEGIN
SELECT @msg = 'You must be the System Administrator (SA)'
SELECT @msg = @msg + ' to execute this procedure.'
RETURN (1)
END
IF (SELECT COUNT(*) FROM master..sysdatabases
WHERE name = @dbname) != 1
BEGIN
SELECT @msg = 'Database ' + @dbname + ' does not exist!'
PRINT @msg
RETURN (1)
END
IF (SELECT COUNT(*) FROM master..sysdatabases
WHERE name = @dbname AND status & 256 = 256) != 1
BEGIN
PRINT 'sp_resetstatus can only be run on suspect databases.'
RETURN (1)
END
BEGIN TRAN
UPDATE master..sysdatabases SET status = status ^ 256
WHERE name = @dbname
IF @@error != 0 OR @@rowcount != 1
ROLLBACK TRAN
ELSE
BEGIN
COMMIT TRAN
SELECT @msg = 'Database ' + @dbname + ' status reset!'
PRINT @msg
PRINT ''
PRINT 'WARNING: You must reboot SQL Server prior to '
PRINT ' accessing this database!'
PRINT ''
END
GO
Espero que estos les sirva.