Hei! chi mi ha cancellato la tabella?

Cari lettori,

Ancora grazie per le numerose visite a questo blog ...sono davvero apprezzate quindi continuate così!

Lo scorso articolo sulle Query SARGABLE è stato abbastanza denso di concetti ed è stato anche il più letto...lo riprenderò andando più in dettaglio promesso!
Vorrei però far trascorrere un po di tempo perchè questi concetti sedimentino..

Stasera invece vorrei parlarvi di un caso che, molto probabilmente, vi sarà capitato. Immagino anche avrà destato in voi quella sorta di panico che scaturisce in genere quando non si sa come procedere..

Immaginate di essere lì tutti concentrati nella modifica di una vostra Query sviluppata nel corso delle settimane.

Bene! La eseguite "et voilà"...il messaggio parla chiaro:
       
Messaggio 208, livello 16, stato 1, riga 1
Il nome di oggetto 'movimenti' non è valido. 
       

La tabella con i dati più importanti per la vostra azienda! e che avete sempre interrogato non esiste più ....è stata cancellata!
Già, ma da chi?

 

Hei! chi mi ha cancellato la tabella?

Vediamo adesso come capire chi è stato a cancellare questa tabella importantissima.

Per prima cosa utilizziamo la funzione fn_dblog per leggere il SQL Server Transaction Log, tramite questa Query:


SELECT * FROM fn_dblog(NULL,NULL) WHERE [Transaction Name] = 'DROPOBJ'
  

La sua esecuzione ritornerà una serie di informazioni



Abbiamo lo SPID che ci può essere utile e poi abbiamo il Transaction ID.
Proprio da questo ultimo valore ricaviamo l'utente tramite il comando:


 
 

Eseguendolo otterremo che ha eseguito il comando di DROP TABLE:


 
Per avere questa informazione il database dorà essere impostato in FULL RECOVERY MODE, se invece si trova in modalità SIMPLE occorrerà essere abbastanza veloci ad eseguire le Query prima che il log venga pulito.


Bene! per oggi è tutto.

Alla prossima!
Luca Biondi @ SQLServerPerformance blog!









Next post: Hei! chi è stato a cancellare le righe dalla mia tabella?

Previous post: Scrivere Query performanti ...la tua Query è SARGABLE?

Comments

I Post più popolari

SQL Server, execution plan and the lazy spool (clearly explained)

SQL Server, datetime vs. datetime2

La clausola NOLOCK. Approfondiamo e facciamo chiarezza!