Database in modalità Suspect

Un database sospetto è un database ritenuto compromesso da SQL Server che, per ragioni di sicurezza, imposta il flag “sospetto” ed impedisce l’accesso ai dati. Le possibili possono essere:

  1. file fisici sul file system corrotti (i motivi potrebbero essere di natura software (virus) o hardware (hard disk danneggiato))
  2. spazio libero su disco insufficiente
  3. Memoria RAM insufficiente
  4. i file risultano aperti da un altro software quindi con accesso negato
  5. uno spegnimento inaspettato del computer o l’arresto inaspettato dei servizi di SQL Server
  6. Il sistema non riesce ad aprire il dispositivo in cui risiedono i dati o il file di registro del server SQL
  7. Il server SQL si arresta in modo anomalo o si riavvia nel mezzo di una transazione, risultando in un file di registro delle transazioni corrotto o inaccessibile
  8. SQL Server tenta di aprire un database e il file appartenente a quel database è già aperto dal software antivirus installato sul sistema
  9. SQL non può completare un’operazione di rollback o rollforward.

Il primo tentativo è quello di togliere il flag di sospetto al database.

exec sp_resetstatus DBNAME

Il passo successivo è impostare il database in emergenza. In questa modalità i dati del database, se non corrotti, torneranno ad essere accessibili, poi, tramite il comando DBCC, sarà possibile effettuare un check degli oggetti del database. Lanciare i comandi sotto indicati uno alla volta in modo da analizzare sempre l’output restituito.

alter database DBNAME set emergency

dbcc checkdb(‘DBNAME’) alter database DBNAME set SINGLE_USER with ROLLBACK IMMEDIATE

dbcc checkdb(‘DBNAME’,REPAIR_ALLOW_DATA_LOSS)

alter database DBNAME set MULTI_USER