Manchmal möchten Sie vielleicht herausfinden, welche genaue Aussage Ihre Tabelle aktualisiert hat. Oder Sie möchten herausfinden, wie die WHERE
-Klausel der DELETE
-Anweisung (von jemandem ausgeführt) aussieht.
DBCC INPUTBUFFER
kann Ihnen diese Art von Informationen zur Verfügung stellen. Sie können einen Trigger für Ihre Tabelle erstellen, der den Befehl verwendet, um den genauen Befehl zu ermitteln, der den Auslöser ausgelöst hat.
Der folgende Triggercode funktioniert in SQL Server 2000 (In SQL Server 7.0 können Sie keine Tabellen innerhalb eines Triggers erstellen. Sie müssen also eine permanente Tabelle erstellen und diese innerhalb des Triggers verwenden). Dieser Code zeigt nur die SQL-Anweisung, den Anmeldenamen, den Benutzernamen und die aktuelle Uhrzeit an, Sie können jedoch den Code ändern, sodass diese Informationen in einer Tabelle für Überwachungs-/Überwachungszwecke protokolliert werden.
CREATE TRIGGER TriggerName
ON TableName
FOR INSERT, UPDATE, DELETE AS
BEGIN
SET NOCOUNT ON
DECLARE @ExecStr varchar(50), @Qry nvarchar(255)
CREATE TABLE #inputbuffer
(
EventType nvarchar(30),
Parameters int,
EventInfo nvarchar(255)
)
SET @ExecStr = 'DBCC INPUTBUFFER(' + STR(@@SPID) + ')'
INSERT INTO #inputbuffer
EXEC (@ExecStr)
SET @Qry = (SELECT EventInfo FROM #inputbuffer)
SELECT @Qry AS 'Query that fired the trigger',
SYSTEM_USER as LoginName,
USER AS UserName,
CURRENT_TIMESTAMP AS CurrentTime
END
Aus dem obigen Code, die TableName
und TriggerName
mit Ihrem Tabellennamen und Triggernamen bzw. ersetzen und Sie können durch die Schaffung der Auslöser und dann durch Einfügen/Aktualisieren/Löschen von Daten des Trigger testen.
Entnommen here!
DROP TRIGGER', 'PROCEDURE CREATE. –
Suche nach 'DBCC INPUTBUFFER'. – Arvo
'WHERE', nicht' WHEN' ... –