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:
- file fisici sul file system corrotti (i motivi potrebbero essere di natura software (virus) o hardware (hard disk danneggiato))
- spazio libero su disco insufficiente
- Memoria RAM insufficiente
- i file risultano aperti da un altro software quindi con accesso negato
- uno spegnimento inaspettato del computer o l’arresto inaspettato dei servizi di SQL Server
- Il sistema non riesce ad aprire il dispositivo in cui risiedono i dati o il file di registro del server SQL
- 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
- SQL Server tenta di aprire un database e il file appartenente a quel database è già aperto dal software antivirus installato sul sistema
- 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
