Logging von Löschvorgängen

Ich nutze SQL Trigger um eine Log Tabelle zu befüllen und Änderungen am Datensatz zu verfolgen. Soweit funktioniert das auch prächtig, der Änderungsbenutzer aus der Ansichtskonfiguration liefert meinem Trigger den verantwortlichen Nutzer. Die Anmeldung der User an der DB erfolgt über einen einheitlichen Account, die Nutzer haben keinen eigenen DB Account.

Probleme habe ich beim Löschen von Datensätzen. Ich kann das sowohl loggen als auch mit einem INSTEAD OF Trigger verhindern, das der Datensatz direkt gelöscht wird. Aber habe ich irgendeine Chance, das Combit meiner DB mitteilt, welcher Benutzer für die Löschoperation verantwortlich ist?

Hi Axel,

ja das kannst du, der Datensatzhistorien-Trigger in der combit Large Solution braucht/benutzt das auch:

SELECT @username = Substring(„program_name“, 0, PATINDEX(’%@%’, „program_name“))
FROM „sys.dm_exec_sessions“
WHERE „session_id“ = @@SPID AND PATINDEX(’%@%’, „program_name“) != 0

Quelle: combits CreateHistorieTriggers.vbs und CreateHistorieTriggers_MSSQL.sql

hope this helps

Gruß Alex

Hi Alex,

das funktioniert super ich werde aber dennoch meine User auf Windows Auth umstellen sofern das problemlos abläuft, und mit der SYSTEM_USER Variable arbeiten.

Auch interessant ist die MS Log Funktion CDC die in der Combit Doku erwähnt wird:

Leider nicht in SQL Express verfügbar daher werd ich sie gar nicht erst testen.