• It looks to me like you're checking all connections to the database. If there are many such connections for different users, that could be a drag on the trigger.

    So, I suggest using EXISTS() instead of COUNT and, if possible, using @@SPID instead of db name to use rows from sysprocesses. I'm sure you know that sysprocesses is deprecated and that sys.dm_exec_sessions is recommened now instead.

    IF EXISTS(SELECT 1

    FROM DatabaseLogonAudit.dbo.AuditDatabase ad

    INNER JOIN master.sys.sysprocesses sp on sp.spid = @@SPID

    INNER JOIN master.sys.dm_exec_connections ec ON ec.session_id = @@SPID

    WHERE sp.loginame = @LoginName

    AND ad.DatabaseName = @DBName

    AND ad.DBLogonAuditRequired = 1

    AND ec.Encrypt_option <> 'TRUE')

    SQL DBA,SQL Server MVP(07, 08, 09) A socialist is someone who will give you the shirt off *someone else's* back.