Wird bei meinem Anmelde-Trigger ein Leistungsproblem festgestellt?Wird bei meinem Anmelde-Trigger ein Leistungsproblem festgestellt?
Ich versuche, den Overhead zu reduzieren und Leistungsprobleme zu verhindern, bevor ich diesen Auslöser auf meine Produktion SQL Server drücken.
Ich habe derzeit die Anmeldung Trigger auf meinem SQL Server Entwicklung. Ich habe es über das letzte Wochenende laufen lassen und es hat mehr als 50.000 Zeilen in meine Audit-Log-Tabelle geschrieben. Ich habe festgestellt, dass 95% der Datensätze für die Anmeldung "NT AUTHORITY/SYSTEM" waren. Also habe ich beschlossen, alles mit 'NT AUTHORITY%' zu filtern und diese Datensätze einfach nicht einzufügen. Ich denke, wenn ich diese "NT-AUTHORITY" -Aufzeichnungen filtere, dass die Menge der Ressourcen, die ich für diese Einsätze einspare, die Kosten der IF-Statement-Prüfung wettmachen wird. Ich habe auch Prefmon angeschaut und sehe nichts ungewöhnliches während der Trigger aktiviert ist, aber dann sieht mein Entwicklungsserver nicht die gleiche Menge an Aktivität wie die Produktion.
USE [MASTER]
GO
CREATE TRIGGER AuditServerAuthentication
ON ALL SERVER
WITH EXECUTE AS SELF
FOR LOGON
AS BEGIN
DECLARE @event XML, @Logon_Name VARCHAR(100)
SET @Event = EVENTDATA()
SET @Logon_Name = CAST(@event.query('/EVENT_INSTANCE/LoginName/text()') AS VARCHAR(100))
IF @Logon_Name NOT LIKE 'NT AUTHORITY%'
BEGIN
INSERT INTO Auditing.Audit.Authentication_Log
(Post_Time,Event_Type,Login_Name,Client_Host,Application_Name,Event_Data)
VALUES
(
CAST(CAST(@event.query('/EVENT_INSTANCE/PostTime/text()') AS VARCHAR(64)) AS DATETIME),
CAST(@event.query('/EVENT_INSTANCE/EventType/text()') AS VARCHAR(100)),
CAST(@event.query('/EVENT_INSTANCE/LoginName/text()') AS VARCHAR(100)),
CAST(@event.query('/EVENT_INSTANCE/ClientHost/text()') AS VARCHAR(100)),
APP_NAME(),
@Event
)
END
END
GO
Der "eingebaute Mechanismus für Login Auditing" ist nicht einfach zu sortieren und nicht Stellen Sie alle Informationen bereit, mit denen Sie benutzerdefinierte Berichte erstellen können. DBAs mögen es, aus Tabellen auszuwählen, um unsere Antworten zu erhalten. :) – DBAndrew