RK977877
چهارشنبه 05 شهریور 1393, 10:53 صبح
با سلام خدمت دوستان گرامی
بهترین روش Log گیری از اطلاعات وارد شده در جداول اعم از Insert - Update-Delete چیه
با تشکر
esteghamat
چهارشنبه 05 شهریور 1393, 16:04 عصر
نگهداري Log يك جدول بدون استفاده از trigger
1- راه اول كه به نظر ساده تر وسريعتر ميآيد. استفاده از مكانيزم CDC (Change Data Capture)
- ابتدا CDC را روي DataBaseفعال مي كنيم.
UseDatabase
sys.sp_cdc_enable_db - سپسجدول مورد نظر را انتخاب مي كنيد و روي آن CDC را فعال مي كنيد. (مثلا جدول Employee)
[LTR_INLINE]
EXEC sys.sp_cdc_enable_table
@source_schema= N'dbo',
@source_name = N'Employee',
@role_name = N'MyCDCUserRole',
@supports_net_changes= 1 - درنتيجه عمليات فوق در system tables يك جدول معادل Employeeساخته مي شود. dbo_employee_CT
- حال يكسري عمليات روي جدول انجام مي دهيم تانتيجه را ببينيم. مثلا :
INSERT INTO dbo.Employee(FirstName, LastName,CurrentPayScale)
VALUES('Ahmad','Jamal', 10000)
GO
DELETEFROM dbo.Employee
WHEREEmployeeID = 2
GO
UPDATEdbo.Employee
SETCurrentPayScale = 15000, FirstName = 'Akramul'
WHEREEmployeeID = 3
GO
UPDATEdbo.Employee
SETCurrentPayScale = 18000
WHEREEmployeeID = 3
GO - حالانتيجه اين عمليات را در جدول مذكور مي بينيم. نتيجه عالي است. همه ركوردها بامقادير. حتي Update ها قبل و بعد از تغيير و ...
select * from cdc.dbo_employee_ct2- راهكار دوم كمي پيچيده تر ومتفاوت تر است.
استفاده از DataBase Audit
- ابتدا بايد خصوصيت C2 Tracingرا روي سرور فعال كرد. راست كليك روي سرور - در قسمت Security - Option - گزينه EnableC2 Audit Tracing
را فعال مي كنيم. سرور بايد يكبار Restart شود.
- بعد در securityسرور قسمت Audit يك Audit جديد ايجاد مي كنيم.
- آنرا فعال مي كنيم.
- در ديتابيس قسمت Securityقسمت DatabaseAudit Specification وارد مي شويم . و مشخصات Object مورد نظر را براي Audit Tracingمي دهيم.
- امكان انتخاب نوع عمليات و نيز هر Objectوجود دارد.
دقت كنيد كه همه عمليات را روي كل Databaseانتخاب نكنيد كه به سرعت Log وحشتناك توليد مي كند و فضاي ديسك را از بينمي برد.
موفق باشيد
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.