Search Suggest

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

Cari lettori,

Nell'ultimo articolo di ieri abbiamo visto come sia possibile rintracciare l'utente che ha eliminato una tabella dal database.

Oggi vediamo invece come capire chi ha eliminato da una tabella alcune delle sue righe.

Buona lettura!


Chi è stato a cancellare le righe dalla mia tabella?

Utilizziamo, come abbiamo mostrato ieri, la funzione non documentata da Microsoft fn_dblog.

Attenzione: proprio perchè non documentata non vi consiglio di adoperarla all'interno delle vostre applicazioni. Questa funzione potrebbe non essere più disponibile in futuro.

Vi mostro il procedumento passo passo.

Per prima cosa creaimo una tabella ad esempio Movimenti e la riempiamo con alcuni dati:


CREATE TABLE [Movimenti] (
[ID] INT IDENTITY,
[Date] DATETIME DEFAULT GETDATE (),
[importo] float);

INSERT INTO Movimenti VALUES ('28/07/2019',100)
INSERT INTO Movimenti VALUES ('29/07/2019',125)

 
Poi andiamo a cancellare una riga:

DELETE FROM Movimenti WHERE id = 2

Adesso andiamo ad interrogare il SQL Server transaction Log:

SELECT * FROM fn_dblog(NULL, NULL) WHERE Operation = 'LOP_DELETE_ROWS'


Se osserviamo la riga evidenziata vediamo che fa riferimento alla nostra tabella:




A questo punto abbiamo a disposizione l'ID della transazione che andiamo a specificarlo in questa Query:


SELECT
Operation,
[Transaction ID],
[Begin Time],
[Transaction Name],
[Transaction SID]
FROM
fn_dblog(NULL, NULL)
WHERE
[Transaction ID] = '0000:00000d88'
AND
[Operation] = 'LOP_BEGIN_XACT'

Se la eseguiamo ottendiamo altre informazioni.
Quello che stavolta ci interessa è il Transaction SID.

Come nell'articolo di ieri se eseguiamo:


SELECT SUSER_SNAME(0x01050000000000051500000096B35C08C4938AA2167CAE56E8030000)

Otteniamo l'utente che ha effettuato la cancellazione.


 

 

 

Per oggi è tutto!


Se è stato di vostro gradimento, seguitemi! Sto preparando altri articoli che penso vi saranno molto utili..

SO STAY TUNED!

Luca Biondi @ SQLServerPerformance blog!









Next post: Tremate tremate gli hacker sono arrivati ...ovvero la SQL INJECTION

Previous post: Hei! chi mi ha cancellato la tabella?



Post a Comment