Wie finde ich heraus, welcher Host / welche IP-Adresse / welches Programm einen Löschvorgang durchgeführt hat?

7

Wir verwenden SQL Server 2005. In unserer Datenbank werden einige Zeilen gelöscht. Wie finde ich das System (Hostname / IP-Adresse), das Programm sowie Datum und Uhrzeit des Löschens?

Edward
quelle

Antworten:

5

Sie können diese Informationen nachträglich nicht finden. Sie müssen einen Trigger und eine Protokollierungstabelle hinzufügen (oder eine teure serverseitige Ablaufverfolgung einrichten oder Ihre Datenzugriffsmethoden manuell protokollieren).

Hier ist ein sehr schnelles Beispiel für die Implementierung einer Protokollierungstabelle und eines Triggers:

CREATE TABLE dbo.TableNameDeleteLog
( 
  PK_From_TableName INT,
  Program NVARCHAR(128),
  Host NVARCHAR(128),
  IP VARCHAR(48),
  When DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);
GO

CREATE TRIGGER dbo.LogDelete_TableName
ON dbo.TableName
FOR DELETE
AS
BEGIN
  SET NOCOUNT ON;

  DECLARE @p NVARCHAR(128), @h NVARCHAR(128), @i VARCHAR(48);

  SELECT @p = s.host_name, @h = host_name, @i = c.client_net_address
    FROM sys.dm_exec_sessions AS s
    INNER JOIN sys.dm_exec_connections AS c
    ON s.session_id = c.session_id
    WHERE s.session_id = @@SPID;

  INSERT dbo.TableNameDeleteLog(PK_From_TableName, Program, Host, IP)
    SELECT PK_Column, @p, @h, @i
    FROM deleted;
END
GO
Aaron Bertrand
quelle
3

SQL Server speichert diese Informationen nicht. Wenn Sie über eine Sicherung verfügen, einschließlich Transaktionsprotokolldateien, können Sie möglicherweise den Zeitpunkt des Löschens genau bestimmen, indem Sie diese fehlenden Datensätze wiederherstellen und nach ihnen suchen.

Sie können den Hostnamen / die IP / das Programm nur finden, wenn Sie dies an anderer Stelle angemeldet haben. Möglicherweise enthält Ihr Ereignisprotokoll, Ihr SQL-Protokoll oder andere Stellen Spuren der Aktivität im Allgemeinen, es werden jedoch keine spezifischen Protokolle (nicht zu verwechseln mit Transaktionsprotokolldatensätzen) zum Löschen von Datensätzen gespeichert.

Mark S. Rasmussen
quelle