ورود

View Full Version : log گيري از تمام رخداد هاي انجام شده توسط كاربر در sql



nilofar9925
سه شنبه 03 اردیبهشت 1392, 08:59 صبح
با سلام خدمت دوستان گرامي
ما توي شركتمون قصد داريم تمام كارهايي كه كاربران انجام مي دهند (تمام دستورات sql كه توسط كاربران اجرا مي شود )رو يه جا ذخيره كنيم به فكرمون sql profiler رسيد ولي چون شركت بزرگه سرعت سيستم رو پايين مياره گفتيم رو جداول تريگر بنويسيم ولي نميدونيم درسته يا نه؟كسي راه حل بهتري سراغ نداره؟

in_chand_nafar
سه شنبه 03 اردیبهشت 1392, 09:29 صبح
اگر منظورتون دستورات DDL است (تغييرات مربوط به ساختار جداول، اشياء و...) مي توانيد از DDL Trigger استفاده كنيد
اگر هم بخواهيد History تغييرات داده ها/ركوردها را داشته باشيد از نسخه 2008 به بعد CDC يا Change Data Capture رو استفاده كنيد و به ازاي برخي از جداول مهم تون اون رو راه اندازي كنيد تا ديتا قبل از تغيير و بعد از تغيير و... رو داشته باشيد

in_chand_nafar
پنج شنبه 05 اردیبهشت 1392, 12:42 عصر
در ضمن این رو هم باید یاد آور بشم که
SQL Server Audit
هم اگر درست استفاده بشه جوابگوی شما است
در سطح سرور : مثلا بگوییم لاگ تمامی کسانی که به سرور لاگین کرده اند و لاگین مربوط به آنها Fail شده یا کسانی که رمزشون رو عوض کرده اند و... (زیاد است توی لیست این نوع Audit ها می توانی مشاهده کنید)
در سطح بانک اطلاعاتی : مثلا بگوییم کلیه دستورات Select به ازای یک شی یا یک دیتا بیس خاص لاگ بشن یا کلیه دستورات Update و....
(منتظر یه فیلم آموزشی در این مورد باشید)
موفق باشید

fa_karoon
پنج شنبه 20 تیر 1392, 09:54 صبح
استفاده از تریگرها باز هم باعث می شود به ازای هر جدول سه تریگر برای حذف، درج و آپدیت ایجادکرد تازه باز هم باید چک کنی تمام فیلدها را که کدامشان تغییر کرده بعد در یک جدولی این تغییرات را ثبت کنی.
روش CDC رو نتونستم باش کنار بیام!
میشه لطفا روش استفاده از SQL Server Audit رو توضیح بدید آخه هر چی در موردش خوندم چیزی درباره امکان لاگ گیری ننوشته بودن، مرسی