PDA

View Full Version : طراحی سیستم لاگ برای چند جدول مهم



IMANAZADI
پنج شنبه 08 بهمن 1394, 09:08 صبح
با سلام

دوستان میخوام برای یک سری از جداول مهم سیستم لاگ طراحی کنم
به نظرتون بهترین ایده چیه ؟؟

مثلا فلان جدول فلان رکورد چه تاریخی چه زمانی توسط چه یوزری اضافه ، حذف ، آپدیت شده است

ممنون میشم

tiphooo
شنبه 10 بهمن 1394, 23:25 عصر
روی جداولی که میخواهی لاگ داشته باشی باید تریگر داشته باشی و برای هر کدام از عملیات INSERT,UPDATE ,DELETE در یک جدول دیگر دستورات مشابه را وارد کنید
مثلا اگر در تریگر عملیات DELETE اتفاق بیفتد باید عیننا دستور DELETE را به عنوان یک فیلد varchar در جدول LOG ذخیره نمایید
مثلا فرض کنید جدول شما دارای یک فیلد کلید ID می باشد در تریگر مربوطه برای حذف به صورت زیر میتوانید عمل کنید

DECLARE @Cnt int,@ID int
SELECT @Cnt=COUNT(ID) FROM Deleted
IF @Cnt>0
BEGIN
SELECT @ID=ID FROM Deleted
INSERT INTO LOG (Logdate,Logtime,....,Log) SELECT GetDate(),GetTime(),...,'حذف از جدول .... با آی دی : '+Cast(@ID as varchar(10))
END

pbm_soy
یک شنبه 11 بهمن 1394, 00:36 صبح
حدود ماه پیش همین بحث توهین سایت مطرح شد بدنبود یه سرچ میکردید
خلاصه بحث اونجا را اگر درست یادم باشه میگم
سیستم لاگ حداالمکان باید سبک باشد ونباید بار اضافی به سیستم اعمال کند
حتی همین استفاده از تریگر و یا ثبت کردن وقایع داخل خود دیتابیس زیاد منطقی نیست بهتر است در بیرون ثبت شود دریک فایل متنی یا نهایتا xm

مورد بعدی بیشتر dbmsها. سیستم لاگ کردن برای دیتابیس را دارند البته برخی برای بازیابی اطلاعات استفاده میکنند وشاید برخی هم برای وقایع نگاری. درهر صورت جزو امکانات مناسبی است که میشه از آن استفاده کرد

ساده ترین روش لاگ کردن اينه که هر دستوری که بروی دیتابیس اجرا میکنید را در یک فایل متنی به همراه زمان اجرای آن ذخیره کنید مخصوصا اگر برنامه را چند لایه مینویسید اینکار را در لایه ای که کار اجرای دستورات بروی دیتابیس دارد انجام دهید در اینصورت سیستم لاگ کردن خیلی ساده تر و راحتتر میشود

IMANAZADI
سه شنبه 13 بهمن 1394, 10:56 صبح
دوست عزیز میدونی مشکل من چیه
من یک سایت طراحی کردم که در اصل یه تعداد یوزر میان اطلاعات یکسری نقشه مرتبط را وارد میکنند و ممکن است اطلاعات وارد شده بعدا توسط یوزرهای دیگه اضافه ویرایش یا حذف بشن
در کل یک پایگاه اطلاعاتی برای نفشه ها و متریال یک پروژه است
واسه همین ممکن است وقتی یک یوزر یک رکورد رو وارد میکنه یوزر بعدی در تاریخ و زمان دیگه ای اون رو ویرایش یا حذف کنه برای همین لاگ سیستم واسم مهم است که کسی خرابکاری نکنه