مفهوم ” تغییر ضبط داده ” (CDC) در SQL Server
دوستان عزیز , این مقاله از یک سایت خارجی ترجمه شده اگر اشتباهی دیدید , به بزرگواری خودتون ببخشید و ممنون میشیم از طریق راههای ارتباطی (ایمیل , تلگرام یا واتساپ ) به اطلاع ما برسانید . سپاس
معرفی
سوابق CDC، درجها، بهروزرسانیها، و حذفها بر روی جداول SQL Server اعمال میشوند و رکوردی را از آنچه، کجا و چه زمانی تغییرات اتفاق میافتند، در «جدول تغییر» ساده رابطهای به جای یک سالاد خرد شده باطنی XML در دسترس قرار میدهند. این جداول تغییرات شامل ستونهایی هستند که ساختار ستونی جدول منبعی را که برای ردیابی انتخاب کردهاید به همراه ابردادههای مورد نیاز برای درک تغییرات ایجاد شده منعکس میکنند. پینال دیو همه را با مثال های فراوان در یک مقدمه ساده توضیح می دهد.
تغییر ضبط داده ها
اغلب به شما می گویند که مشخصات یک برنامه مستلزم آن است که مقدار داده ها در پایگاه داده یک برنامه قبل از تغییر آن باید ثبت شود. به عبارت دیگر، ما باید تمام تاریخچه تغییرات داده ها را ذخیره کنیم. این ویژگی معمولاً برای اهداف امنیت داده ها پیاده سازی می شود. برای پیادهسازی این، راهحلهای مختلفی را دیدهام، از محرکها، مهرهای زمانی، و پرسوجوهای پیچیده (روشهای ذخیرهشده) تا ممیزی دادهها.
SQL Server ویژگیهای جدید راهاندازهای «پس از بهروزرسانی،» «پس از درج» و «پس از حذف» را معرفی کرد که تقریباً مشکل ردیابی تغییرات دادهها را حل کرد. راه حل بهتری در SQL Server به نام Change Data Capture (CDC) معرفی شد. CDC به توسعه دهندگان SQL Server اجازه داده است تا بایگانی و ضبط داده های SQL Server را بدون برنامه نویسی اضافی ارائه دهند.
CDC یک ویژگی جدید ردیابی و ضبط داده SQL Server است. این فقط تغییرات جداول ایجاد شده توسط کاربر را ردیابی می کند. از آنجایی که داده های گرفته شده سپس در جداول رابطه ای ذخیره می شوند، می توان به راحتی با استفاده از T-SQL معمولی به آنها دسترسی پیدا کرد و بازیابی کرد.
هنگامی که ویژگیهای «تغییر ضبط داده» را در جدول پایگاه داده اعمال میکنید، آینهای از جدول ردیابی شده با همان ساختار ستونی جدول اصلی اما با ستونهای اضافی که شامل ابرداده مورد استفاده برای خلاصه کردن ماهیت تغییر در جدول است ایجاد میشود. ردیف جدول پایگاه داده سپس SQL Server DBA می تواند به راحتی فعالیت جدول ثبت شده را با استفاده از این جداول حسابرسی جدید نظارت کند.
فعال کردن Change Data Capture در پایگاه داده
ابتدا باید CDC برای پایگاه داده فعال شود. از آنجایی که CDC یک ویژگی در سطح جدول است، باید برای ردیابی هر جدول فعال شود. می توانید کوئری زیر را اجرا کنید و بررسی کنید که آیا برای هر پایگاه داده ای فعال است یا خیر.
USE master
GO
SELECT [name], database_id, is_cdc_enabled
FROM sys.databases
GO
این کوئری کل نام پایگاه داده و ستونی را برمی گرداند که نشان می دهد CDC فعال است یا خیر.
شما می توانید این رویه ذخیره شده را در زمینه هر پایگاه داده اجرا کنید تا CDC را در سطح پایگاه داده فعال کنید. (اسکریپت زیر CDC را در پایگاه داده AdventureWorks فعال می کند.)
USE AdventureWorks
GO
EXEC sys.sp_cdc_enable_db
GO
به محض اینکه CDC فعال شود، این نتیجه را در SSMS نشان می دهد.
علاوه بر این، در پایگاه داده AdventureWorks ، خواهید دید که یک طرح با نام “cdc” ایجاد شده است.
برخی از جداول سیستم در پایگاه داده AdventureWorks به عنوان بخشی از طرح cdc ایجاد خواهند شد.
جدول هایی که ایجاد شده اند در اینجا فهرست شده اند.
- cdc.captured_columns – این جدول نتایج را برای لیستی از ستون های گرفته شده برمی گرداند.
- cdc.change_tables – این جدول لیستی از تمام جداول فعال شده برای ضبط را برمی گرداند.
- cdc.ddl_history – این جدول شامل تاریخچه تغییرات DDL از زمان فعال شدن داده های ضبط است.
- cdc.index_columns – این جدول حاوی شاخص های مرتبط با جدول تغییر است.
- cdc.lsn_time_mapping – این جدول شماره LSN (که بعداً خواهیم آموخت) و زمان را ترسیم می کند.
فعال کردن Change Data Capture در یک یا چند جدول پایگاه داده
ویژگی CDC را می توان در سطح جدول برای هر پایگاه داده ای که CDC برای آن فعال است، اعمال کرد. باید برای هر جدولی که نیاز به ردیابی دارد فعال شود. ابتدا کوئری زیر را اجرا کنید تا نشان دهید کدام جداول پایگاه داده قبلاً برای CDC فعال شده اند.
USE AdventureWorks
GO
SELECT [name], is_tracked_by_cdc
FROM sys.tables
GO
کوئری بالا نتیجه ای را برمی گرداند که شامل ستونی با نام جدول و ستونی است که در صورت فعال بودن CDC نمایش داده می شود.
برای فعال کردن هر جدول می توانید رویه ذخیره شده زیر را اجرا کنید. قبل از فعال کردن CDC در سطح جدول، مطمئن شوید که SQL Server Agent را فعال کرده اید. هنگامی که CDC روی یک جدول فعال می شود، دو کار مرتبط با CDC خاص برای پایگاه داده ایجاد می کند و با استفاده از SQL Server Agent اجرا می شود. بدون فعال بودن SQL Server Agent، این کارها اجرا نمی شوند.
همچنین درک نقش پارامتر مورد نیاز @role_name ضروری است. فرض کنید محدودیتی در نحوه استخراج داده ها از پایگاه داده وجود دارد. در این صورت، از این گزینه برای تعیین هر نقشی که به دنبال محدودیت ها باشد و در صورت وجود، دسترسی به داده ها به این گزینه استفاده می شود. اگر هیچ نقشی را مشخص نکنید و به جای آن یک مقدار NULL ارسال کنید، دسترسی داده به این جدول تغییر یافته ردیابی نخواهد شد و برای دسترسی به همه در دسترس خواهد بود.
اسکریپت زیر CDC را در جدول تغییر منابع انسانی فعال می کند.
USE AdventureWorks
GO
EXEC sys.sp_cdc_enable_table
@source_schema = N’HumanResources’,
@source_name = N’Shift’,
@role_name = NULL
GO
از آنجایی که ما از پایگاه داده AdventureWorks استفاده می کنیم، مشاغل را با نام های زیر ایجاد می کند.
cdc.AdventureWorks_capture
- رویه sys.sp_cdc_scan به صورت داخلی توسط sys.sp_MScdc_capture_job فراخوانی می شود. هنگامی که این کار اجرا می شود، رویه ذخیره شده در سیستم sys.sp_MScdc_capture_job را اجرا می کند. هنگامی که عملیات اسکن ثبت گزارش تغییر ثبت اطلاعات فعال است، یا پایگاه داده برای تکرار تراکنش فعال است، این رویه نمی تواند به طور صریح اجرا شود. این سیستم SP عامل SQL Server را فعال میکند، که امکان Change Data Capture را فراهم میکند.
cdc.AdventureWorks_cleanup
- هنگامی که این کار اجرا می شود، رویه ذخیره شده در سیستم sys.sp_MScdc_cleanup_job را اجرا می کند. این سیستم SP جداول تغییرات پایگاه داده را پاک می کند.
Stored Procedure sys.sp_cdc_enable_table CDC را فعال می کند. CDC یک ابزار بسیار قدرتمند و همه کاره است. چندین گزینه با این SP موجود است، اما ما فقط به گزینه های مورد نیاز برای این SP اشاره می کنیم. با درک Stored Procedure sys.sp_cdc_enable_table ، پتانسیل واقعی ویژگی CDC را به دست خواهید آورد. نکته دیگری که باید به آن توجه کنید این است که وقتی این مشاغل ایجاد می شوند، به طور خودکار نیز فعال می شوند.
به طور پیش فرض، تمام ستون های جدول مشخص شده در این عملیات در نظر گرفته می شوند. اگر می خواهید تنها چند ستون از این جدول در آن حالت ردیابی شود، می توانید ستون ها را به عنوان یکی از پارامترهای SP ذکر شده در بالا مشخص کنید.وقتی همه چیز تکمیل شد، جداول سیستم را دوباره بررسی کنید، جدول جدیدی به نام cdc.HumanResources_Shift_CT پیدا خواهید کرد. این جدول شامل تمام تغییرات جدول HumanResources.Shift خواهد بود. اگر این جدول را گسترش دهید، پنج ستون اضافی نیز خواهید یافت.
همانطور که خواهید دید، پنج ستون اضافی برای جدول اصلی آینه شده وجود دارد
- __$start_lsn
- __$end_lsn
- __$ seqval
- __$ عملیات
- __$update_mask
دو مقدار برای ما ضروری است: __$operation و __$update_mask.
ستون _$operation حاوی مقداری است که با عملیات DML مطابقت دارد. در زیر فهرستی سریع از مقادیر و معنای مربوط به آنها آورده شده است.
- حذف بیانیه = 1
- درج عبارت = 2
- مقدار قبل از به روز رسانی بیانیه = 3
- مقدار پس از به روز رسانی بیانیه = 4
این ماسک حاوی مقداری است که با مقادیر بیت تشکیل شده است. ستون _$update_mask از طریق یک بیت مپ نشان می دهد که کدام ستون ها در عملیات DML مشخص شده توسط _$operation به روز شده اند. اگر این یک عملیات DELETE یا INSERT بود، همه ستون ها به روز می شوند، بنابراین ماسک حاوی یک مقدار با تمام 1 ها در آن است.
نمونه ای از Change Data Capture
ما این ویژگی را با انجام عملیات DML مانند INSERT، UPDATE و DELETE روی جدول HumanResources آزمایش خواهیم کرد. تغییری که ما برای CDC تنظیم کرده ایم. ما اثرات را بر روی جدول CDC مشاهده خواهیم کرد cdc.HumanResources_Shift_CT. قبل از شروع، بیایید ابتدا از هر دو جدول SELECT کنیم و ببینیم چه چیزی در آنها وجود دارد.
USE AdventureWorks
GO
SELECT *
FROM HumanResources.Shift
GO
USE AdventureWorks
GO
SELECT *
FROM cdc.HumanResources_Shift_CT
GO
نتیجه پرس و جو در اینجا نمایش داده می شود.
جدول اصلی HumanResources.Shift دارای سه ردیف است، در حالی که جدول cdc.HumanResources_Shift_CT خالی است. این جدول پس از انجام عملیات در جدول ردیابی شده دارای ورودی هایی خواهد بود.
عملیات درج
بیایید عملیات INSERT را روی جدول HumanResources.Shift اجرا کنیم.
USE AdventureWorks
GO
INSERT INTO [HumanResources].[Shift]
([Name],[StartTime],[EndTime],[ModifiedDate])
VALUES (‘Tracked Shift’,GETDATE(), GETDATE(), GETDATE())
GO
هنگامی که اسکریپت اجرا شد، محتوای دو جدول HumanResources.Shift و cdc.HumanResources_Shift_CT را بررسی می کنیم.
به دلیل عملیات INSERT، ما یک ردیف چهارم جدید در جدول ردیابی شده HumanResources.Shift داریم. جدول ردیابی نیز دارای همان ردیف قابل مشاهده است. مقدار _operation 2 است، به این معنی که این یک عملیات INSERT است.
عملیات به روز رسانی
برای نشان دادن اثرات بهروزرسانی، یک ردیف جدید درج شده را بهروزرسانی میکنیم.
USE AdventureWorks
GO
UPDATE [HumanResources].[Shift]
SET Name = ‘New Name’,
ModifiedDate = GETDATE()
WHERE ShiftID = 4
GO
یک بار دیگر، جداول HumanResources.Shift و cdc.HumanResources_Shift_CT را بررسی می کنیم.
عملیات UPDATE همیشه منجر به دو ورودی مختلف در جدول ردیابی می شود. یک ورودی حاوی مقادیر قبلی قبل از اجرای UPDATE است. ورودی دوم برای داده های جدید پس از اجرای UPDATE است.
مکانیسم Change Data Capture همیشه تمام ستونهای جدول را میگیرد، مگر اینکه، زمانی که CDC روی یک جدول تنظیم میشود، فقط به ردیابی چند ستون محدود شود. در مورد ما، ما فقط دو ستون جدول را تغییر دادهایم، اما جدول کامل را دنبال میکنیم، بنابراین همه ورودیها قبل و بعد از بهروزرسانی ثبت میشوند. در ادامه این مقاله خواهیم دید که چگونه می توان این کار را انجام داد.
عملیات حذف
console.log( 'Code is Poetry' USE AdventureWorks
GO
DELETE
FROM [HumanResources].[Shift]
WHERE ShiftID = 4
GO);
وقتی این اسکریپت اجرا شد، میتوانیم محتویات جداول HumanResources.Shift و cdc.HumanResources_Shift_CT را ببینیم.
با توجه به عملیات DELETE ، اکنون تنها سه ردیف در جدول ردیابی شده داریم. HumanResources.Shift: ردیف حذف شده در جدول ردیابی به عنوان ورودی جدید قابل مشاهده است. مقدار _operation 4 است، به این معنی که این یک عملیات حذف است.
تغییر ضبط داده و عملیات
اکنون تأیید کردهایم که استفاده از CDC میتواند تمام دادههای تحتتاثیر عملیات DML را ضبط کند. در جدول ردیابی، ما چهار مقدار از عملیات را داریم. مقدار این عملیات را در تصویر زیر می بینیم.
آشنایی با ماسک به روز رسانی
درک ستون Update mask در جدول ردیابی مهم است. نام آن _$update_mask است. مقدار نمایش داده شده در فیلد هگزادسیمال است اما به صورت باینری ذخیره می شود.
در مثال ما سه عملیات مختلف داریم. عملیات INSERT و DELETE در سطر کامل انجام می شود، نه ستون های جداگانه. این عملیات با علامتگذاری پوشانده شده با 0x1F که به صورت باینری بهعنوان 0b11111 ترجمه شده است، فهرست شدهاند که به معنای هر پنج ستون جدول است.
در مثال ما، فقط در دو ستون – دوم و پنجم – به روز رسانی داشتیم. این با 0x12 در مقدار هگزادسیمال (0b10010 در باینری) نشان داده شده است. در اینجا، اگر از سمت راست به عنوان یک بیت مپ به آن نگاه کنید، این مقدار مخفف مقادیر دوم و پنجم است. این یک روش ارزشمند برای تعیین اینکه کدام ستون ها به روز می شوند یا تغییر می کنند است.
جدول ردیابی دو ستون حاوی پسوند lsn، یعنی _$start_lsn و _$end_lsn را نشان می دهد. این دو مقدار مربوط به Log Sequential Number هستند. این عدد با تراکنش تعهد شده عملیات DML در جدول ردیابی شده مرتبط است.
غیرفعال کردن Change Data Capture در جدول
غیرفعال کردن این ویژگی بسیار ساده است. همانطور که قبلاً دیدیم، اگر باید CDC را فعال کنیم، باید این کار را در دو مرحله انجام دهیم – در سطح جدول و سطح پایگاه داده. به همین ترتیب وقتی باید این ویژگی را غیرفعال کنیم، می توانیم در همان دو سطح این کار را انجام دهیم. بگذارید هر دو را یکی پس از دیگری ببینیم.
برای حذف هر ردیابی جدول، به سه مقدار نیاز داریم: طرحواره منبع، نام جدول منبع، و نمونه ضبط. دریافت اسامی طرحواره و جدول بسیار آسان است. در مورد ما، طرح واره HumanResource و نام جدول Shift است. با این حال، نام Capture Instance را نمی دانیم. با اجرای T-SQL Query زیر می توانیم آن را به راحتی بازیابی کنیم.
USE AdventureWorks;
GO
EXEC sys.sp_cdc_help_change_data_capture
GO
این یک نتیجه را نشان می دهد که شامل هر سه اطلاعات لازم برای غیرفعال کردن CDC در یک جدول است.
Stored Procedure sys.sp_cdc_help_change_data_capture اطلاعات مفید دیگری را ارائه می دهد. هنگامی که نام نمونه ضبط را داریم، میتوانیم ردیابی جدول را با اجرای این کوئری T-SQL غیرفعال کنیم.
USE AdventureWorks;
GO EXECUTE sys.sp_cdc_disable_table @source_schema = N’HumanResources’,
@source_name = N’Shift’,
@capture_instance = N’HumanResources_Shift’;
GO
هنگامی که Change Data Capture در هر جدولی غیرفعال می شود، جدول تغییر داده های ضبط و همچنین تمام توابع مرتبط با آنها را حذف می کند. همچنین تمام ردیف ها و داده های مربوط به این ویژگی را از تمام جداول سیستم حذف می کند و داده های مربوطه را در نمای کاتالوگ تغییر می دهد.
در مثال ما، میتوانیم ببینیم که جدول ضبط cdc.HumanResources_Shift_CT حذف شده است.
ویژگی Change Data Capture را در پایگاه داده غیرفعال کنید
این ساده ترین کار در بین تمام فرآیندها است. اجرای پرس و جوی T-SQL زیر، CDC را در کل پایگاه داده غیرفعال می کند.
USE AdventureWorks
GO
EXEC sys.sp_cdc_disable_db
GO
این رویه ذخیره شده تمام داده ها، توابع و جداول مربوط به CDC را حذف می کند. اگر این داده ها مورد نیاز است، باید قبل از حذف CDC از هر پایگاه داده، یک نسخه پشتیبان تهیه کنید.
گرفتن ستون انتخاب شده
وقتی CDC روی هر جدولی فعال است، معمولاً دادههای تمام ستونها را جمعآوری میکند. در حین عملیات INSERT یا DELETE گرفتن تمام داده ها ضروری است اما در عملیات UPDATE فقط داده های ستون های به روز شده مورد نیاز است. CDC هنوز به اندازه کافی برای ارائه این نوع انتخاب ستون پویا پیشرفت نکرده است، اما CDC می تواند به شما اجازه دهد ستون هایی را انتخاب کنید که تغییرات داده ها باید از همان ابتدا ثبت شوند.
این رویه ذخیره شده باید در زمینه هر پایگاه داده اجرا شود تا در سطح پایگاه داده فعال شود. اسکریپت زیر CDC را در پایگاه داده AdventureWorks فعال می کند.
USE AdventureWorks
GO
EXEC sys.sp_cdc_enable_db
GO
اکنون این ویژگی را در سطح جدول فعال می کنیم اما فقط برای ستون های انتخاب شده ShiftID و Name. این اسکریپت ضبط داده های تغییر سطح جدول را فقط برای دو ستون فعال می کند.
USE AdventureWorks GO EXEC sys.sp_cdc_enable_table @source_schema = N’HumanResources’,
@source_name = N’Shift’,
@role_name = NULL,
@captured_column_list = ‘[ShiftID],
[Name]’ GO
بنابراین در جدول سیستمی که برای اهداف جمعآوری داده در پایگاه داده AdventureWorks ایجاد میشود، چیست؟
بنابراین می توانید ببینید که اکنون فقط دو ردیف ردیابی می شوند.
ما دادههای یکی از ستونهایی را که برای دیدن مقدار در جدول cdc—HumanResources_Shift_CT مشخص نشدهاند، تغییر میدهیم.قبل از شروع، اجازه دهید از هر دو جدول انتخاب کرده و محتوای آنها را مشاهده کنیم.
USE AdventureWorks
GO
SELECT *
FROM HumanResources.Shift
GO
USE AdventureWorks
GO
SELECT *
FROM cdc.HumanResources_Shift_CT
GO
در اینجا نتیجه است.
جدول اصلی HumanResources.Shift اکنون دارای سه ردیف است، در حالی که جدول cdc.HumanResources_Shift_CT خالی است. بیایید ModifiedDate را برای ShiftID =1 بهروزرسانی کنیم و ببینیم آیا آن رکورد یک ورودی در جدول ردیابی ایجاد میکند یا خیر.
USE AdventureWorks
GO
UPDATE [HumanResources].[Shift]
SET ModifiedDate = GETDATE()
WHERE ShiftID = 3
GO
اکنون، برای بررسی محتویات جدول ردیابی cdc.HumanResources_Shift_CT و ببینید که آیا این تغییر ثبت شده است یا خیر.
جدول ردیابی خالی است زیرا فقط تغییرات موجود را ردیابی می کند و هر گونه تغییر در ستون های دیگر را نادیده می گیرد.
بازیابی داده های گرفته شده در بازه زمانی خاص
اغلب، از شخص خواسته می شود که داده ها در یک بازه زمانی ردیابی شوند. اگر به داده های ردیابی نگاه کنید، هیچ زمانی ضبط نمی شود. همیشه تمام اطلاعات را ارائه می دهد. با این حال، چند فیلد می تواند به ما کمک کند، به عنوان مثال، _$start_lsn. LSN مخفف Last Sequence Number است. یک LSN به طور منحصر به فرد هر رکورد را در گزارش تراکنش شناسایی می کند. آنها همیشه در حال افزایش اعداد هستند.
اعداد LSN همیشه با زمان مرتبط هستند و نگاشت آنها را می توان پس از جستجو در جدول سیستم cdc.lsn_time_mapping یافت. این جدول یکی از جداولی است که با فعال شدن پایگاه داده AdventureWorks برای CDC ایجاد شده است. می توانید این پرس و جو را برای دریافت تمام داده های جدول cdc.lsn_time_mapping اجرا کنید.
USE AdventureWorks
GO
SELECT *
FROM cdc.lsn_time_mapping
GO
هنگامی که این کوئری اجرا می شود، تمام ردیف های جدول را به ما می دهد. یافتن اطلاعات لازم از تمامی داده ها کمی دشوار است. حالت معمول زمانی است که باید تغییری را که در یک دوره خاص رخ داده است بررسی کنیم.
ما می توانیم با استفاده از تابع سیستم sys.fn_cdc_map_time_to_lsn، زمان مربوط به LSN را پیدا کنیم. اگر بخواهیم همه تغییرات دیروز انجام شود، می توانیم این تابع را همانطور که در زیر توضیح داده شده اجرا کنیم و تمام ردیف های دیروز را برمی گرداند.
قبل از اجرای این کوئری، اجازه دهید دو تابع با ارزش جدول (TVF) را در پایگاه داده AdventureWorks بررسی کنیم. می بینید که دو TVF جدید با schema cfc ایجاد شده است. این توابع زمانی ایجاد شدند که CDC در سطح جدول فعال شد.
تابع cdc.fn_cdc_get_all_changes_HumanResources_Shift می تواند برای دریافت رویدادهایی که در یک دوره خاص رخ داده اند استفاده شود. شما می توانید این اسکریپت T-SQL را برای دریافت رویدادها در هر دوره خاص اجرا کنید. در مورد ما، ما این داده ها را برای 24 ساعت گذشته بازیابی خواهیم کرد.
جستار زیر باید داده های اصلاح شده در 24 ساعت گذشته را بازیابی کند.
USE AdventureWorks
GO
DECLARE @begin_time DATETIME, @end_time DATETIME, @begin_lsn BINARY(10), @end_lsn BINARY(10);
SELECT @begin_time = GETDATE()-1, @end_time = GETDATE();
SELECT @begin_lsn = sys.fn_cdc_map_time_to_lsn(‘smallest greater than’, @begin_time);
SELECT @end_lsn = sys.fn_cdc_map_time_to_lsn(‘largest less than or equal’, @end_time);
SELECT *
FROM cdc.fn_cdc_get_all_changes_HumanResources_Shift(@begin_lsn,@end_lsn,’all’)
GO
ما از عملیات رابطه ای در تابع sys.fn_cdc_map_time_to_lsn استفاده کرده ایم. در مجموع می توان چهار عملیات رابطه ای مختلف برای استفاده در آن تابع وجود داشته باشد:
- بزرگترین کمتر از
- بزرگترین کمتر یا مساوی
- کوچکترین بزرگتر از
- کوچکترین بزرگتر یا مساوی
به این ترتیب، داده های گرفته شده را می توان به راحتی و بر اساس فواصل زمانی پرس و جو کرد.
فرآیند پاکسازی خودکار
ما هر تغییری در تمام داده های پایگاه داده خود را ردیابی کنیم، این احتمال وجود دارد که از هارد دیسک سرور اصلی پیشی بگیریم. این همچنین منجر به مشکلات نگهداری و بافر ورودی/خروجی می شود.
در CDC، یک فرآیند پاکسازی خودکار در فواصل زمانی منظم اجرا می شود. به طور پیش فرض، فاصله 3 روز است، اما می توان آن را پیکربندی کرد. هنگامی که CDC را در پایگاه داده فعال کردیم، مشاهده کردیم که یک روش ذخیره شده در سیستم اضافی با نام sys.sp_cdc_cleanup_change_table ایجاد شد که تمام داده های ردیابی شده را در فواصل زمانی پاک می کند.
خلاصه
برای سال ها، برنامه نویسان سعی کرده اند سیستم هایی ایجاد کنند که تمام تغییرات ایجاد شده در داده ها را در یک برنامه پایگاه داده ثبت کند. در نهایت، با SQL Server، ما یک راه قوی داریم، CDC، که از جعبه خارج می شود تا این عملکرد را به روشی استاندارد ارائه دهد. این باید برای ممیزی پایگاههای داده و ردیابی مشکلات مبهم مفید باشد که به شما نیاز دارد دقیقاً بدانید چه زمانی و کجا تغییر در جدول پایه انجام شده است.
این مقاله با در نظر گرفتن بهروزرسانی تجمعی 3 SQL Server SP1 نوشته شده است. من هر یک از پیشنهادات یا ایدههای شما را در مورد این موضوع به عنوان نظر در مورد مقاله تشویق میکنم.
آموزش ویدیویی هوش تجاری در SQL
شما در این دوره آموزشی (آموزش ویدیویی هوش تجاری در SQL) با مفاهیم و اصول هوش تجاری در SQL آشنا می شوید.
آموزش صفر تا صد داشبورد سازی در سی شارپ
آموزش کامل و پروژه محور مباحث به همراه مثال کاملا عملی در محیط سی شارپ که یک محیط برنامه نویسی ماکروسافتی می باشد. دوره آموزش داشبورد سازی در سی شارپ شامل ساخت یک داشبود زیبا در محیط سی شارپ به کمک کامپوننتهای ssrs و Chart.js می باشد.
آموزش کاملا حرفه ای ویدیویی هوش تجاری در Oracle
آموزش ویدیویی هوش تجاری در Oracle ابتدا به بررسی ساختار کلی هوش تجاری اوراکل پرداخته و سپس به مراحل نصب نرم افزارهای مرتبط با کار خود می پردازیم. سپس مباحث آنالیز داده و فاندامنتال کار را بررسی کرده و در خصوص ریپازیتوری و مسایل مربوط به ان صحبت می کنیم.
دوره کامل تضمینی هوش تجاری با رویکرد کسب درآمد در داخل و خارج از کشور
آنالیز داده و هوش تجاری یکی از پردرآمدهای شغل های دنیا چه در داخل کشور و چه خارج از کشور است. ما در دوره آموزشی صفر تا صد هوش تجاری را به صورت تضمینی آموزش میدهیم.
دیدگاهتان را بنویسید