الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

استفسار عن جدول Log

مغلقمُجاب
بدأه ورق خسرانه في 30 أبريل 2013 · 7 رد · 1,289 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم 

 اخواني الاعضاء ومشرفين لدي استفسار عن جدول Log  قراءة عن هذه الجدول والذي فهتمه انه جدول يقوم بتخزين جميع العمليات الذي تتم في database

 لكن سؤالي هل يتم تخزين جميع  العمليات سواء حذف او اضافة او تعديل او بحث  في هذه الجدول ؟ 

والسؤال الثاني هل  تسجل جميع العمليات الذي تتم على الجداول في هذه الجدول 

لو فرضنا لدي جدول اسمة 

emp

وجدول اخر اسمة

dept

 هل اذا تمت عملية الحذف او التعديل او البحث او الاضافة على جدول emp يتم تخزين نوع العملية واسم الجدول الشخص الذي قام بهذه العملية  والوقت في جدول Log

وهل اذا تمت نفس العملية على جدول dept سيتم تخزين نفس السناريو في جدول Log

----------------------

واخيراً السؤال المهم . كيف اقوم بتخزين هذه العمليات  في جدول Log ماهي افضل طريقة ؟ 

وماهي الحقول الذي لازم انشائها في جدول Log 

#2

UP

#3

UP

#4

السلام عليكم ..

  1. إذا كنت تقصد بالــ log  هو الملف الثاني مع قاعدة البيانات , فهو خاص بسيكوال سيرفر و يحوي معلومات عن العمليات التي حصلت في القاعدة و يستخدم في حالات الــ Rollback  .
  2. حسب معلوماتي أن المستخدم لا يمكنه معرفة محتوى الــ log  بشكل مباشر , و لكن هناك ادوات خارجية تسمح لك بعرض ذلك (ApexSQL Log) .
  3. إذا أردت تحقيق log  خاص بك , قيجب استخدام الــ Triggers  ..
1

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#5
houssam11350_11350 كتب:

السلام عليكم ..

  1. إذا كنت تقصد بالــ log  هو الملف الثاني مع قاعدة البيانات , فهو خاص بسيكوال سيرفر و يحوي معلومات عن العمليات التي حصلت في القاعدة و يستخدم في حالات الــ Rollback  .
  2. حسب معلوماتي أن المستخدم لا يمكنه معرفة محتوى الــ log  بشكل مباشر , و لكن هناك ادوات خارجية تسمح لك بعرض ذلك (ApexSQL Log) .
  3. إذا أردت تحقيق log  خاص بك , قيجب استخدام الــ Triggers  ..

---------------------

 اخي انا اريد Log خاص بي ..  واريد عندما يقوم المستخدم اما بحذف سجل او تعديل سجل او اضافة سجل .. يتم عمل نسخة من نفس السجل الذي اجري علية اي تغير 

ويتم كتابة اسم الشخص الذي قاسم بالتعديل او الاضافة او الحذف

لو فرضنا ان لدي جدول اسمة 

--------------

users 

رقم المستخدم :

اسم المستخدم:

وكلمة المرور:

-------------- 

جدول اخر اسمة  emp

رقم الموظف:

اسم الموظف :

الراتب :

-------------------------

والذي اريدة  عندما يقوم اي مستخدم  باضافة سجل او تعديل او حذف سجل 

 يتم كتابة اسم المستخدم الذي قاسم بالاضافة او التعديل او الحذف ويتم عمل نسخة من السجل الذي قاسم باضافته او تعديلة او حذفة .

 كيف ساقوم بعمل هذه الترايقر  مشرفنا العزيز حسام .. ممكن مثال بسيط ؟ 

#6 أفضل إجابة

السلام عليكم ..

  1. نفرض لدينا الدول التالي :
    CREATE TABLE [dbo].[Employees](
    	[EmployeeID] [int] NOT NULL,
    	[FirstName] [varchar](20) NULL,
    	[TheDate] [smalldatetime] NULL
    ) ON [PRIMARY]

     

  2. نعمل جدول LOG  خاص يه و ليكم كمايلي :

    CREATE TABLE [dbo].[Employees_log](
    	[EmployeeID] [int] NOT NULL,
    	[FirstName] [varchar](20) NULL,
    	[TheDate] [smalldatetime] NULL,
    TheAction NVARCHAR(10) NOT NULL CONSTRAINT CK_THEACTION CHECK(TheAction In ('insert','update' , 'delete')),  
    ChangedDate DATETIME NOT NULL Default GETDATE(),  
    ChangedBy NVARCHAR(10) NOT NULL DEFAULT USER_NAME()
    
    
    ) ON [PRIMARY]

     

  3. الآن نعمل Trigger  للــ Insert  كمايلي :

    CREATE TRIGGER TRG_EMPLOYESS_INSERT ON EMPLOYEES FOR INSERT AS
    BEGIN
    INSERT  EMPLOYEES_LOG (EmployeeID , FirstName ,TheDate , TheAction)
    SELECT EmployeeID , FirstName ,TheDate , 'INSERT' FROM INSERTED;
    
    END

     

  4. نكرر نفس الكلام على الــ UPDATE  كمايلي :

    CREATE TRIGGER TRG_EMPLOYESS_UPDATE ON EMPLOYEES AFTRE UPDATE AS
    BEGIN
    INSERT  EMPLOYEES_LOG (EmployeeID , FirstName ,TheDate , TheAction)
    SELECT EmployeeID , FirstName ,TheDate , 'UPDATE' FROM INSERTED;
    
    END

     

  5. و للحذف :

    CREATE TRIGGER TRG_EMPLOYESS_DELETE ON EMPLOYEES FOR DELETE AS
    BEGIN
    INSERT  EMPLOYEES_LOG (EmployeeID , FirstName ,TheDate , TheAction)
    SELECT EmployeeID , FirstName ,TheDate , 'DELETE' FROM DELETED;
    
    END

     

  6. يمكن تعقب التغييرات دون triggers    راجع (SQL Server Change Tracking on Table (Without Triggers)) .

2

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#7

يمكن استخدامSQL Server Change Data Capture

انظر الرابط

http://www.sql-server-performance.com/2013/understanding-sql-server-change-data-capture-cdc/

1
#8

وهذا أيضا كتاب

يشرح الــ Triggers شرحا مفصلا بالكامل ويحتوي ايضا علي طريقة عمل لوج خاص بك كما وضح الاخ الفاضل حسام 

Triggers.pdf

1

certifiedj.jpg

 

 

Image Hosted by ImageShack.us

هذا الموضوع مغلق.

مواضيع مشابهة