PDA

View Full Version : سوال: فهميدن اينکه هر کاربر چه عملياتي بر روي بانک انجام ميدهد



mehrnoosh_al62
سه شنبه 19 شهریور 1387, 12:28 عصر
ميخوام بدونم چطور ميشه مدير يه سايت عملياتي که هر کاربربر روي بانک انجام ميده مثل حذف،اضافه ، ويرايش رو کنترل کنه و يه گزارش از عمليات هر کاربرداشته باشه...

يعني بتونه به گزارشي دسترسي داشته باشه که در اون مشخص شه هر کاربر چه کارهايي بر روي بانک انجام داده...

Blackk_lightt
سه شنبه 19 شهریور 1387, 14:01 عصر
سلام
تا اون جایی که من فهمیدم فایله LOG کارت رو را میندازه
مثلا شما یه Buttonداری برای حذف
وقتی هم کاربر وارد برنامه شد تو یه فایل ساعت و تاریخ ورودش ثبت میشه
مثلا وقتی روی Button حذف کلیک کرد بازم تو فایل با تاریخ و ساعت ثبت میشه

mehrnoosh_al62
سه شنبه 19 شهریور 1387, 14:21 عصر
میشه بیشتر توضیح بدین؟ چیو باید تو فایل ثبت کنم؟ یعنی برای هر عملیات باید یه فایل جدا در نظر بگیرم؟

mehrnoosh_al62
سه شنبه 19 شهریور 1387, 15:23 عصر
ببینید من میخوام اینو بدونم که از لحظه ای که کاربر لاگین میشه تا لحظه ای که خارج میشه چه عملیاتی و بر روی چه جداولی از بانک انجام میده و این عملیات رو باید ثبت کنم تا بعد بشه ازش گزارش گرفت... فعلا فقط اضافه و حذف و ویرایشو باید ثبت کنم.
همچنین زمان انجام عملیات هم باید ثبت شه...

mehrnoosh_al62
چهارشنبه 20 شهریور 1387, 09:16 صبح
اگه راه دیگه ای به ذهنتون میرسه لطفا راهنماییم کنید.
میشه زمان انجام تغیییرات در بانک رو با زمان ورود و خروج کاربران مقایسه و نهایتا تغییرات انجام شده توشط هر کاربر رو تشخیص داد؟

bahman7210
چهارشنبه 20 شهریور 1387, 09:34 صبح
در sql امکانی هس به نام profile
tools/profile هر عملی در بانک انجام بشه اونجا ثبت می شه میتونی اطلاعات را داخل یه جدول ثبت کنی

سار
چهارشنبه 20 شهریور 1387, 09:40 صبح
میتونید به چند روش از Log استفاده کنید
1)استفاده از خود SQL Server
2)استفاده از Windows
3)استفاده از Enterprise Library
4) نوشتن یک سیستم Log توسط خودتان(محل ذخیره سازیش هم میتونه سیستم فایل باشه یا یک جدول در SQL Server)

راستش من گزینه دو و یا چهار رو پیشنهاد میدم

mehrnoosh_al62
چهارشنبه 20 شهریور 1387, 09:53 صبح
در sql امکانی هس به نام profile
tools/profile هر عملی در بانک انجام بشه اونجا ثبت می شه میتونی اطلاعات را داخل یه جدول ثبت کنی

سلام میشه در مورد profile بیشتر توضیح بدین؟
چطور میتونم ازش استفاده کنم؟

mehrnoosh_al62
چهارشنبه 20 شهریور 1387, 09:55 صبح
میتونید به چند روش از Log استفاده کنید
1)استفاده از خود SQL Server
2)استفاده از Windows
3)استفاده از Enterprise Library
4) نوشتن یک سیستم Log توسط خودتان(محل ذخیره سازیش هم میتونه سیستم فایل باشه یا یک جدول در SQL Server)

راستش من گزینه دو و یا چهار رو پیشنهاد میدم

ببخشید اگه ممکنه در مورد روش هاتون یه مقدار توضیح بدید؟
من تا حالا با LOG کار نکردم...

afsharm
چهارشنبه 20 شهریور 1387, 10:14 صبح
به نظر من هم بهترین راه استفاده از Enterprise Library است. Enterprise Library مجموعه‌ای از چندین و چند کلاس مفید و کاربردی است که معمولا در طول خیلی از پروژه‌های متوسط به بالا مورد نیاز است. این کتابخانه را مایکروسافت جمع آوری و منتشر کرده است. بخش مورد نیاز شما از این کتابخانه یک Namespace به نام Logging است. با کمک کلاس‌های موجود در آن می‌توانید عملیات Log را به راحتی آب خوردن انجام دهید. یک نمونه کد ساده با استفاده از آن:


LogEntry log = new LogEntry();
log.Categories.Add(Constants.Logging.LogCategory.E rror);
log.Categories.Add(Constants.Logging.LogCategory.P ortal);
log.Severity = System.Diagnostics.TraceEventType.Error;
log.Message = GetLogMessage(Server.GetLastError()); //GenerateErrorMessage(Server.GetLastError());
log.Priority = Constants.Logging.Priority.High;
Logger.Write(log);

mehrnoosh_al62
چهارشنبه 20 شهریور 1387, 10:21 صبح
ممنون ولی کجای برنامم از این کتابخانه استفاده کنم.
فکر میکنم هنوز متوجه مشکل من نشدید... مشکل اساسی من تشخیص زمان ونوع عملیات توسط کاربر بر روی بانکه...
اینکه تشخیص بدم کاربر در هر زمان چه عملیاتی بر روی بانک انجام داده.. لطفا به پست 4 توجه کنید.

mehrnoosh_al62
چهارشنبه 20 شهریور 1387, 10:36 صبح
جناب bahman یه موضوع در مورود profile مطرح کردن. میشه در مورد این موضوع اگه مطلبی میدونید کمک کنید؟

سار
چهارشنبه 20 شهریور 1387, 11:53 صبح
ببین دوست عزیز
- اگر بخواهید از لاگ خود SQL Server استفاده کنید باید برای هر کاربر یک یوزر در SQL Server داشته باشید و هر بار که کاربر به سیستم لاگ این می کنه شما هم با همان یوزر به پایگاه وصل بشید. بعد دیگه مشکلی نیست و باید پیکربندی لاگ ها رو در SQL Server تنظیم کنید و بعد از اونها گزارش بگیرید.
- در مورد ویندوز می تونید از کلاس لاگ استفاده کنید و درواقع در لاگ خود ویندوز وقایع رو ثبت کنید.
System.Diagnostics.EventLog
http://msdn.microsoft.com/en-us/library/ms723689(VS.85).aspx

- در مورد Enterprise library میتونی لینک های زیر رو برسی کنی
http://www.codeproject.com/KB/architecture/GetLoggingWithEntLib.aspx
http://msdn.microsoft.com/en-us/library/aa480453.aspx
http://www.codeplex.com/entlib

- میمونه اینکه خودت بنویسی که خیلی ساده هستش کافیه یه جدول داشته باشی و هر وقت هرچیزی رو خواستی تو اون لاگ کنی

mehrnoosh_al62
چهارشنبه 20 شهریور 1387, 12:21 عصر
واقعا به خاطر وقتی که میذارید ممنونم ولی جناب سار شما با یه برنامه نویس مبتدی طرف هستید.
من اصلا متوجه حرف هاتون نمیشم. یه بار هم گفتم در مورد لاگ هیچ چیز نمیدونم...!!!

mehrnoosh_al62
چهارشنبه 20 شهریور 1387, 12:41 عصر
در Enterprise Manager در منوی Tools\Sql Profiler جدولی هست که کلیه عملیات انجام شده در بانک با زمان انجام آنها ثبت میشه. من نیاز به همچین چیزی دارم البته از طریق کد. چطور میشه از طریق کد به این جدول دسترسی داشته باشم؟ آیا این اطلاعات تو هیچ جدول سیستمی ذخیره میشه؟

Tools\Sql Profiler New\Trace

mehrnoosh_al62
پنج شنبه 21 شهریور 1387, 09:41 صبح
یعنی واقعا هیچ راهی نیست؟
از زمانی که کاربر وارد سیستم میشه تا لحظه خروج چه تغییراتی در بانک ایجاد میشود؟

سار
پنج شنبه 21 شهریور 1387, 10:52 صبح
دوست عزیز مفهوم لاگ ربطی به برنامه نویسی نداره
تا حال پیش نیومده که یه خطایی سیستم بهت بده و بعد تو رو به لاگ اون ارجاع بده؟
لاگ یعنی همون کاری که تو میخوای بکنی، یعنی ثبت رخداد های سیستم که میتون عامل این رخداد کاربر باشه یا نباشه.

noroozifar
پنج شنبه 21 شهریور 1387, 11:03 صبح
می تونی داخل خود بانک یک جدول ایجاد کنی که گزینه های حذف و اضافه و تغییرات یا هر کاری که می شود در بانک انجام داد و بعد هرگاه مثلا کاربر کلید حذف را زد یک رکورد ایجاد کنه و مشخصات کاربر و عملکردش را ذخیره کنه با این کار هر زمان در هر تاریخی که می خواهی ببینی که کاربر چه کاری را انجام داده امکان پذیر است

azam2005
دوشنبه 22 اسفند 1390, 14:43 عصر
لطفا نحوه استفاده از Enterprise Library را توضیح دهید من دانلود و نصب کردم ولی نمی دون کجا رفت وچی شد؟
موقعی که برنامه روی هاست نصب می شود مشکلی پیش نمی یاد؟