عملیات بکاپگیری (Backup) و بازگردانی اطلاعات (Restore) در SQL Server مطابق با نوع Recovery Model در دیتابیس مورد نظر انجام میپذیرد در واقع Recovery Modelها برای کنترل نگهداری Transaction Logها طراحی شدهاند. یک Recovery Model جزئی از دیتابیس است که بر موارد زیر کنترل و نظارت دارد:
به طور کلی در SQL Server سه نوع Recovery Model به شرح زیر وجود دارد:
در این Recovery Model تا زمانیکه ازTransaction Log ها Backup گرفته نشود، SQL اقدام به حذف آنها نمیکند و Logها زمانی حذف خواهند شد که به یکی از روشهایFull ،Differential و یا Transaction Log از دیتابیس Backup تهیه گردد. در صورتیکه Database دچار مشکل شود، با استفاده از Full Recovery Model بیشترین انعطاف پذیری برای بازیابی اطلاعات در Database وجود دارد. از بزرگترین مزیتهای این نوع Recovery Model این است که در هنگام بازیابی اطلاعات قادر خواهید بود آنها را به زمان و تاریخی که مدنظرتان است بازیابی کنید و این ویژگی به ما امکان استفاده از قابلیت نقطه زمانی بازیابی (Point In Time Recovery) را میدهد. مدت زمانی که طول میکشدSQL Server از Transaction Logها Backup تهیه کند در واقع تعیین کننده حجم اطلاعاتی است که در زمان بروز حادثه میتوان بازیابی کرد.
این مدل ریکاوری شباهت بسیار زیادی به Full Recovery Model دارد اما تفاوت اصلی بین این دو مدل در روشی است که مدل ریکاوری Bulk-logged برای مدیریت عملیاتهای گسترده تغییرات در اطلاعات انجام میدهد. در واقع این روش برای ثبت اطلاعات و عملیات ها در Transaction Logها، از روشی به نام Minimal Logging استفاده میکند. با استفاده از این روش سرعت پردازشی بسیار بالا میرود، زمان پردازشها طبیعتاً کاهش پیدا میکند و میزان فضای مصرفی برای اغلب عملکردها کاهش مییابد. اما در این روش قابلیت استفاده از Point In Time Restore را نخواهید داشت. در این مدل، حجم فایل Transaction Logها نسبت به مدل ریکاوری Full بسیار کمتر خواهد شد. در رابطه با این نوع Recovery مایکروسافت پیشنهاد میکند که از Bulk-logged Recovery Model بصورت مقطعی و موردی استفاده شود و نمیبایست آن را به عنوان یک راهکار دائمی در نظر گرفت. توجه داشته باشید اگر سازمان شما به گونهای باشد که نیاز داشته باشید مدل ریکاوری شما از Full Logging به Minimal Logging تغییر پیدا کند، باید توجه داشته باشید زمانی اقدام به انجام این عملیات کنید که کاربران در حال بروزرسانی یا ثبت اطلاعات جدید در Databaseها نباشند، زیرا در این صورت امکان از بین رفتن دادهها حین انجام عملیات وجود دارد.
هدف اصلی این روش این است که SQL Server حداقل اندازه اطلاعات را در Transaction Logهای خود داشته باشد. در این حالت SQL Server هرگاه که Database به یکTransaction Checkpoint برسد، اطلاعات Transaction Logها را حذف میکند (که در اصطلاح به اینکار Truncate کردن گفته میشود) که در پی آن هیچ Logی برای انجام عملیات Disaster Recovery وجود نخواهد داشت. استفاده از این مدل ریکاوری باعث میشود که فقط امکان بازگردانی اطلاعات از دیتابیسهایی وجود داشته باشد که به روشهایFull و Differential بکاپگیری صورت گرفته است. در حالت Simple Recovery Model قابلیت بازیابی اطلاعات به یک نقطه زمانی خاص وجود ندارد و تنها میتوان اطلاعات را به طور کامل با استفاده از Full Backup یا Differential Backup به زمانی برگرداند که Backupها ایجاد شده اند. در استفاده از این حالت ریکاوری با خالی شدن Transaction Logها فضای بیشتری در هارد دیسک شما برای انجام فرآیندهای دیگر باز خواهد شد.
مدل بازیابی در دیتابیسها به صورت پیش فرض Full میباشد. جهت تغییر آن به صورت زیر عمل کنید:
