دسته بندی ها
12:46 1400/09/09

ثبت کلیه فعالیت های کاربر در نرم افزار سی شارپ توسط Sql Server

مشخصات سوال کننده :
کاربر : Tarak4135     امتیاز کاربر : 56     رتبه کاربر : 17
دسته بندی : سی شارپ Sql Server

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 4021
هوش مصنوعی

پاسخ هوش مصنوعی

برای پیگیری و ثبت تمام فعالیت های کاربر در نرم افزار شما، استفاده از یک جدول جداگانه برای لاگ تغییرات منطقی است. این کار به شما اجازه می دهد تا همه تغییرات، شامل حذف، افزودن و ویرایش رکوردها را ثبت کنید. در این جدول، می توانید فیلدهای لازم برای ضبط اطلاعات را داشته باشید.

به عنوان مثال، می توانید یک جدول به نام `UserActivityLog` ایجاد کنید که اطلاعات زیر را داشته باشد:


CREATE TABLE UserActivityLog (
    Id INT PRIMARY KEY IDENTITY,
    TableName NVARCHAR(50),
    Action NVARCHAR(50), -- "Add", "Update", "Delete"
    RecordId INT, -- شناسه رکورد متاثر
    UserId INT, -- شناسه کاربر
    DateOfAction DATETIME DEFAULT GETDATE(),
    Description NVARCHAR(MAX) -- توضیحات اضافی (اختیاری)
);

زمانی که کاربری عملی بر روی یک رکورد انجام می دهد (اکسیون افزودن، ویرایش یا حذف)، می توانید به صورت برنامه نویسی یک رکورد جدید در `UserActivityLog` اضافه کنید. برای مثال:


public void LogUserActivity(string tableName, string action, int recordId, int userId, string description)
{
    using (SqlConnection conn = new SqlConnection("your_connection_string"))
    {
        string query = "INSERT INTO UserActivityLog (TableName, Action, RecordId, UserId, Description) VALUES (@TableName, @Action, @RecordId, @UserId, @Description)";
        using (SqlCommand cmd = new SqlCommand(query, conn))
        {
            cmd.Parameters.AddWithValue("@TableName", tableName);
            cmd.Parameters.AddWithValue("@Action", action);
            cmd.Parameters.AddWithValue("@RecordId", recordId);
            cmd.Parameters.AddWithValue("@UserId", userId);
            cmd.Parameters.AddWithValue("@Description", description);

            conn.Open();
            cmd.ExecuteNonQuery();
        }
    }
}

با این روش، شما می توانید یک گزارش کلی از فعالیت های هر کاربر در زمان های مشخص داشته باشید. برای گزارش گیری می توانید به سادگی اطلاعات را از جدول `UserActivityLog` پرس و جو کنید.

در نهایت، ذخیره سازی تاریخچه فعالیت ها در یک جدول جداگانه می تواند کارآمدتر باشد و به شما کمک کند تا بتوانید به گذشته مراجعه کرده و تعاملات کاربران را ردیابی کنید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : saedbfd 15:31 1400/09/12

ثبت Log های کاربر در Sql Server

چند نکته رو میگم خدمتتون :

  • اول اینکه سعی کنید حتما برای ثبت تاریخ از نوع داده ای DateTime استفاده کنید. تاریخ های string ممکنه بعدا شما رو دچار مشکلاتی کنه. (تبدیل تاریخ شمسی به میلادی و بالعکس)
  • نکته دوم اینکه بهتره هیچ وقت اطلاعات رو به صورت فیزیکی و واقعی حذف نکنید. یعنی اگر نیاز هست اطلاعاتی حذف بشه توسط یک flag این کار رو انجام بدید. ببینید یک مثال میزنم. فرض کنید در یک آموزشگاه دانش آموزان در یک کلاس ثبت نام می کنند. حالا یک دانش آموز قصد انصراف از کلاس رو داره. ما نباید اطلاعات رو حذف کنیم. چون تاریخچه اطلاعاتمون رو داریم از بین می بریم با این کار. بهتره یک فیلد flag داشته باشیم که به صورت true و false باشه. اگر true بود یعنی دانش آموز هنوز در کلاس درس حضور داره. اگر false بود یعنی انصراف داده. شما هم بهتره تا حد امکان log های خودتون رو به صورت کامل از بین نبرید.
  • نکته سوم هم اینکه اگر قصد دارید اطلاعاتی رو کامل از جدول حذف کنید ولی میخواید تاریخچه اش باقی بمونه میتونید از یک جدول دیگه کمک بگیرید. برای این کار هم میتونید از Trigger کمک بگیرید. یعنی نیاز نیست هر جایی عملیات Delete رو انجام دادید خودتون دستی توی نرم افزار دستور insert بنویسید.
به این پاسخ امتیاز بدهید    1
امتیاز: 1664 رتبه: 1
پاسخ دهنده : Tarak4135 09:26 1400/09/24

سلام.

ممنونم آقای بحرانی فرد بابت پاسخ به سوال.

مطلبی پیدا کردم که گفتم شاید خالی از لطف نباشه در اینجا بیان کنم.

جدیدا آقای ابراهیم رعیت پرور ویدیویی ضبط کرده که روش دیگری جهت ثبت log را بیان میکنند.

یوتیوب

به این پاسخ امتیاز بدهید    1
امتیاز: 56 رتبه: 17
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود