فهرست مطالب این مقاله:
در این مقاله انواع مدلهای بازیابی قابل استفاده در نرم افزار SQL SERVER (از جمله Full، Simple و Bulk Logged) شرح داده میشود.
عملیات بکاپگیری (Backup) و بازگردانی اطلاعات (Restore) در SQL Server مطابق با نوع Recovery Model در دیتابیس مورد نظر انجام میپذیرد (برای آشنایی با انواع روشهای بکاپگیری به مقالهی آشنایی با روشهای ایجاد نسخه بکاپ در SQL مراجعه کنید). در واقع Recovery Modelها برای کنترل نگهداری Transaction Logها طراحی شدهاند. یک Recovery Model جزئی از دیتابیس است که بر موارد زیر کنترل و نظارت دارد:
- تراکنشها (Transaction) چگونه به صورت لاگ ذخیره شوند؟
- آیا Transaction Logها نیاز به (و یا اجازه) بکاپگیری دارند یا خیر؟
- کدام نوع از عملیات بازگردانی اطلاعات (Restore) در دسترس و قابل استفاده است؟
به طور کلی در SQL Server سه نوع Recovery Model به شرح زیر وجود دارد:
- مدل بازیابی Full
- مدل بازیابی Bulk-Logged
- مدل ریکاوری Simple
مدل بازیابی کامل یا Full 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 تهیه کند در واقع تعیین کننده حجم اطلاعاتی است که در زمان بروز حادثه میتوان بازیابی کرد.
مدل بازیابی Bulk-Logged Recovery Model
این مدل ریکاوری شباهت بسیار زیادی به 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ها نباشند، زیرا در این صورت امکان از بین رفتن دادهها حین انجام عملیات وجود دارد.
مدل بازیابی ساده یا Simple Recovery Model
هدف اصلی این روش این است که 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 میباشد. جهت تغییر آن به صورت زیر عمل کنید:
- در ابتدا پنجره SQL Server Management Studio را باز کرده و در قسمت Object Explorer وارد پوشه databases شوید.
- بر روی دیتابیس موردنظر کلیک راست کرده و گزینه Properties را انتخاب کنید.
- در سمت چپ صفحه و از قسمت Select a page، بر روی Options کلیک کنید و سپس Recovery Model موردنظر خود را با توجه به نیاز انتخاب نمایید.