Wednesday, January 04, 2012

Logon Triggers

בפוסט זה אציג בתחילה בצורה כללית את Logon Triggers, את שימושיו וסוגיו השונים ולאחר מכן אציג מספר קטעי קוד קצרים המיישמים אותו בפועל. ולבסוף אציג את מגרעותיו ומספר טיפים קצרים לשימוש נבון בו.

אז ככה, מגרסת 2005 ומעלה SQL Server הציגו לעולם את הפיצ'ר שנקרא  Logon Triggers שנועד לעזור לנו לשלוט בצורה סינכרונית (הסבר מפורט בהמשך…) על מספר המשתמשים ברגע נתון ב- Instance מסוים או רק לדעת מי מחובר כרגע. וכמו כן,גם על מספר ה- Sessions  שמריץ כל משתמש. חשוב לציין כי Logon Triggers השונים נכנסים לפעולה אך ורק לאחר השלמת תהליך ההתחברות ל-Instance, אך לפני שהמשתמש פתח Session חדש מול SQL Serve.

איך Logon Triggers פועלים?

השינוי המשמעותי ש- Logon Triggers מקנים לנו המשתמשים הוא בעצם ניטור ושליטה סינכרוניים על תהליך יצירת Sessions. אם תרצו, תוכלו לנטר יצירה של Sessions  בעזרת Trace Event שנקרא: AUDIT_LOGIN. ממש כמו Logon Triggers, הוא מופעל בכל פעם שנוצר Session  חדש במערכת אך לפני תחילתו בפועל(כמובן לאחר תהליך ה- Authentication). הבעיה היא, שלא ניתן לנקוט כל פעולה בעזרת ה- Trace Event בתגובה! ופה בעצם טמון היתרון הגדול של Logon Triggers, הם, בניגוד ל- Trace מאפשרים לנו לפעול בתגובה לאירוע של יצירת Session לפני תחילתו בפועל!! קרי, יכולת לשלוט על מספר המשתמשים וה- Sessions בצורה סינכרונית.

דוגמא מספר 1: Logon Trigger for all connections

עיינו בקוד הבא:

CREATE TRIGGER MonitoringAllConnections

ON ALL SERVER

AFTER LOGON

AS

BEGIN

+ 'PRINT SUSER_SNAME() + ' Just logged to

+ 'UPPER(LTRIM(@@SERVERNAME))+ ' SQL Server at

+ ':LTRIM(GETDATE()) + ' With

()APP_NAME

END

GO


Read more: Madeira
QR: http://chart.googleapis.com/chart?chs=80x80&cht=qr&choe=UTF-8&chl=http://www.madeira.co.il/logon-triggers/

Posted via email from Jasper-Net