Change Data Capture در SQL Server
Change Data Capture (CDC) در SQL Server قابلیتی است که تغییرات اعمال شده روی جداول را ثبت میکند. بهعنوان مثال، اگر بخواهید اطلاعات مربوط به عملیات INSERT، UPDATE و DELETE را برای اهداف حسابرسی ذخیره کنید، میتوانید CDC را روی آن جدول فعال نمایید.
نحوه فعالسازی CDC در SQL Server
فعالسازی CDC شامل دو مرحله اصلی است:
فعالسازی CDC در سطح دیتابیس
فعالسازی CDC در سطح جدول
فعالسازی CDC در دیتابیس
برای فعال کردن CDC در دیتابیس، از دستور زیر استفاده میکنیم:
USE [CDC Testing]
GO
EXEC sys.sp_cdc_enable_db
GO
پس از اجرای این دستور، SQL Server به صورت خودکار چند جدول سیستمی و پروسیجرهای ذخیرهشده مرتبط با CDC را ایجاد میکند که وظیفه ثبت تغییرات را بر عهده دارند.
فعالسازی CDC در جدول
برای فعال کردن CDC در یک جدول خاص (مثلاً جدول Employee)، از کد زیر استفاده میشود:
EXEC sys.sp_cdc_enable_table
@source_schema = N'dbo',
@source_name = N'Employee',
@role_name = NULL
GO
پس از اجرا، جدولی به نام cdc.dbo.Employee_CT
ایجاد میشود که تغییرات جدول Employee را ذخیره میکند. این جدول شامل اطلاعاتی است که تغییرات INSERT، UPDATE و DELETE را ثبت میکند.
نمونه عملیات و ثبت تغییرات
INSERT: با افزودن یک رکورد جدید به جدول Employee، یک رکورد با کد عملیات 2 (insert) در جدول تغییرات ثبت میشود.
UPDATE: هنگام بروزرسانی رکورد، دو رکورد در جدول تغییرات ایجاد میشود؛ یکی با کد عملیات 3 (مقدار قبل از تغییر) و دیگری با کد 4 (مقدار جدید).
DELETE: حذف رکورد باعث ثبت رکوردی با کد عملیات 1 (delete) در جدول تغییرات میشود.
غیرفعالسازی CDC
برای غیرفعال کردن CDC ابتدا باید آن را در سطح جدول و سپس در سطح دیتابیس غیرفعال کنید.
غیرفعالسازی CDC در جدول
EXEC sys.sp_cdc_disable_table
@source_schema = N'dbo',
@source_name = N'Employee',
@capture_instance = dbo_Employee
GO
غیرفعالسازی CDC در دیتابیس
EXEC sys.sp_cdc_disable_db
GO
پس از اجرای این دستورات، جداول و پروسیجرهای سیستمی مرتبط با CDC حذف خواهند شد.
فعالسازی CDC روی ستونهای خاص
SQL Server این امکان را میدهد که CDC را فقط روی ستونهای مشخصی از جدول فعال کنید. مثلاً:
EXEC sys.sp_cdc_enable_table
@source_schema = N'dbo',
@source_name = N'Employee',
@role_name = NULL,
@captured_column_list = '[EmpID], [FirstName]'
GO
در این حالت، تنها تغییرات مربوط به ستونهای EmpID و FirstName ثبت میشود، حتی اگر سایر ستونها نیز تغییر کنند.
معماری و نحوه کار CDC در SQL Server
CDC بر اساس Transaction Log عمل میکند. تغییرات اعمال شده روی جداول در لاگ تراکنش ثبت میشوند و CDC این لاگ را میخواند تا تغییرات را استخراج و در جداول مخصوص خود ذخیره کند. این روش باعث میشود که بار اضافی روی دیتابیس به حداقل برسد و تغییرات به صورت کارآمد ثبت شوند.
مزایا و کاربردهای CDC
ردیابی تغییرات دادهها بدون نیاز به تغییر در برنامههای کاربردی
بهبود عملکرد نسبت به روشهای سنتی مثل تریگرها
امکان استفاده در فرآیندهای ETL برای بارگذاری افزایشی دادهها
حسابرسی و پایش تغییرات در دادهها برای اهداف امنیتی و مدیریتی
این مقاله به شما کمک میکند تا با مفهوم، نحوه فعالسازی، غیرفعالسازی و کاربردهای Change Data Capture در SQL Server آشنا شوید و بتوانید این قابلیت را به صورت بهینه در پروژههای خود پیادهسازی کنید.
نکته مهم: برای فعالسازی CDC باید دسترسیهای مدیریتی (admin) در دیتابیس داشته باشید و SQL Server Agent باید فعال باشد
دیدگاهتان را بنویسید