Ieri sera, il mio laptop ha avuto un mancamento, decidendo di non effettuare lo shutdown e sostituendolo con un restart indipendentemente dal tipo di richiesta effettuata, è un difetto di questa macchina che si verifica ogni tanto in non so quali circostanze. L’unico modo per spegnerlo e fare in modo che Suspend, Hibernate, Shutdown riprendano a funzionare è spegnerlo in modo brutale usando il tasto off, e staccargli la batteria per un poco.
Stamattina, facendolo ripartire non mi funzionava una applicazione che usa i database, perciò ho aperto SQL Management studio e ho scoperto che due dei database avevano accanto al nome la scritta (Suspect), mi era già successo alcuni anni fa, a causa di un malfunzionamento di un disco su un server, quando SQL Server parte e trova qualcosa di strano sui database usa questo “Marchio di infamia”, il database in questione non può essere in alcun modo modificato, backuppato o rimesso in linea dalla user interface, per rimetterlo a posto si possono fare due cose:
1) Cancellarlo e ripristinarlo da backup (ecco perché è indispensabile fare sempre i backup!!!)
2) Eseguire lo script di seguito indicato ma ovviamente si potrebbe perdere dei dati, di sicuro dati persi è meglio di database vuoto, pertanto se necessario va usato.
considerato che non è qualcosa che accade spesso e non è proprio ben documentata neppure in internet riporto il codice necessario.
exec sp_resetstatus 'NomeDatabase' ALTER DATABASE NomeDatabase SET EMERGENCY DBCC checkdb('NomeDatabase') ALTER DATABASE NomeDatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE DBCC CheckDB ('NomeDatabase', REPAIR_ALLOW_DATA_LOSS) ALTER DATABASE NomeDatabase SET MULTI_USER
N.B. Questo script può far Perdere dei dati quindi usarlo solo se non esiste un backup ripristinabile o se, come nel mio caso si tratta di un database di test e la perdita di dati è irrilevante.