# پایگاه‌های داده > SQL Server > مدیریت دیتابیس (Database Administration) >  log گيري از تمام رخداد هاي انجام شده توسط كاربر در sql

## nilofar9925

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

----------


## in_chand_nafar

اگر منظورتون دستورات DDL است (تغييرات مربوط به ساختار جداول، اشياء و...) مي توانيد از DDL Trigger استفاده كنيد
اگر هم بخواهيد History تغييرات داده ها/ركوردها را داشته باشيد از نسخه 2008 به بعد CDC يا Change Data Capture رو استفاده كنيد و به ازاي برخي از جداول مهم تون اون رو راه اندازي كنيد تا ديتا قبل از تغيير و بعد از تغيير و... رو داشته باشيد

----------


## in_chand_nafar

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

----------


## fa_karoon

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

----------

