اولین قسمت از پکیج آموزش SQL DOCTOR - بازیابی رکوردهای حذف شده در SQLSERVER
پیش نیاز آموزش بازیابی رکوردهای حذف شده در SQLSERVER :
آشنایی با مباحث Backup - Restore در sql server
آشنایی مقدماتی با لاگ فایل
سرفصل های آموزش بازیابی رکوردهای حذف شده در SQLSERVER :
مروری بر ساختار دیتابیس و مراحل انجام عملیات Delete
اقدامات لازم جهت شروع فرآیند بازیابی رکوردهای حذف شده
آشنایی با لاگ فایل و فیلدهای مورد نیاز
استفاده از Backup – Restore در بازیابی رکوردها
تجزیه اطلاعات لاگ فایل و طراحی SP جهت بازیابی رکوردها
مقایسه دستورات Drop – Delete - Truncate
معرفی و آموزش و مقایسه سه ابزار از شرکت های Apex و Systools
آموزش دانلود، نصب و کرک سه نرم افزار مورد نیاز
بازیابی اطلاعات Truncate-Delete-Drop شده با استفاده از ابزار فوق
مقایسه و بیان نقاط ضعف و قوت هر یک از روش های بازیابی رکوردهای حذف شده
و ...
اسکریپت ها، کتاب microsoft_sql_server_2012_internals و نرم افزارهای استفاده شده در طول آموزش، همراه فایل دانلودی ضمیمه شده است.
توضیح مختصر آموزش بازیابی رکوردهای حذف شده در SQLSERVER :
یکی از اتفاقات تلخ برای هر برنامه نویس و بویژه مدیر پایگاه داده، حذف ناخواسته اطلاعات از جداول است. حذف اطلاعات ممکن است به دلایلی مانند وجود خطا در کوئری طراحی شده، اجرای جاب و یا تریگر، خطای کاربر و ... اتفاق بیفتد. اما آشنایی با ساختار دیتابیس و مراحلی که جهت نهایی شدن عملیات حذف یک رکورد در sql server رخ می دهد به ما کمک می کند که به راحتی، اطلاعات حذف شده را بازیابی کنیم. به عنوان مثال در سیستم عامل ویندوز، با آگاهی از اینکه اطلاعات پاک شده، بصورت فیزیکی حذف نمی شوند و تنها فضای اشغال شده توسط آن ها جهت استفاده مجدد علامتگذاری می شوند، می توانیم با استفاده از نرم افزارهای مختلف، این اطلاعات را بازیابی کنیم.
همانطور که می دانید یک پایگاه داده در sql server از دو فایل mdf و ldf تشکیل شده است که فایل mdf حاوی اطلاعات اصلی(رکوردها) است و ldf سابقه کلیه عملیات انجام شده بر روی این رکوردها را نگهداری می کند. پس به عنوان مثال اگر در یک جدول مجموعه ای از کوردها را داشته باشیم(در فایل mdf) و یک دستور delete جهت حذف تعدادی از رکوردها اجرا کنیم. سابقه عملیات انجام شده در لاگ فایل(ldf) ذخیره می شود به این معنی که مقادیر موجود در فیلدهای رکوردهای حذف شده، در لاگ فایل نگهداری می شوند:
در تصویر بالا مراحل لازم جهت حذف رکوردهایی از جدول که دارای مقدار aabbccddبندامیرaabbccdd در فیلد Family هستند نمایش داده شده است. همانطور که مشاهده می کنید مراحل به ترتیب با شماره مشخص شده اند و قبل از نهایی شدن تغییرات بر روی دیسک(فایل mdf) در مرحله 4، بایستی در ابتدا این تغییرات در فایل ldf ذخیره شوند(مرحله 3). جزئیات نحوه انجام این عملیات در فیلم آموزش بازیابی رکوردهای حذف شده در SQLSERVER بیان شده است.
پس تا اینجا می دانیم که اولاً اطلاعات حذف شده، در لاگ فایل موجود و قابل بازیابی هستند(البته بستگی به تنطیم Recovery Model دیتابیس نیز دارد) و ثانیاً مانند آنچه در مورد سیستم عامل ویندوز اشاره کردیم، رکوردها بصورت فیزیکی حذف نمی شوند و تنها جهت استفاده مجدد از فضای اشغال شده علامتگذاری می شوند. ما نیز بر اساس این دو مورد در آموزش بازیابی رکوردهای حذف شده در SQLSERVER سه روش جهت بازیابی اطلاعات به شما آموزش می دهیم:
روش های اول و دوم در بازیابی رکوردهای حذف شده با استفاده از ابزار و امکانات داخلی sql server انجام می شوندکه در این راستا مروری داریم بر کتاب microsoft_sql_server_2012_internals از Kalen Delaney و در روش سوم از ابزارهای جانبی استفاده می کنیم. برخی از روش های معرفی شده در آموزش بازیابی رکوردهای حذف شده در SQLSERVER را می توان برای مواقعی که Recovery Model دیتابیس در حالت Simple تنظیم شده است و یا به هر دلیلی لاگ فایل دیتابیس را از دست داده باشیم استفاده نمود که این مورد به نوبه خود بسیار کاربردی خواهد بود.
در استفاده از ابزارهای جانبی جهت بازیابی رکوردهای حذف شده، سه نرم افزار مختلف را معرفی کرده ایم. به دلیل اینکه هر کدام از این نرم افزارها از روش و مکانیزم متفاوتی برای بازیابی رکوردها استفاده می کنند و استفاده همزمان از آن ها، شانس بازیابی را افزایش می دهد(در طول آموزش به مکانیزم بازیابی هر نرم افزار پرداخته شده است).
تصویر زیر یک فلوچارت جهت راهنمایی در استفاده از دو نرم افزار ApexSQL Log و ApexSQL Recover در شرایط مختلف جهت بازیابی رکوردهای حذف شده در SQLSERVER توسط شرکت Apex ارائه شده است(در طول آموزش مروری بر این فلوچارت داریم):
در طول آموزش بازیابی رکوردهای حذف شده در SQLSERVER در ابتدا مروری بر ساختار دیتابیس و مراحل مورد نیاز جهت حذف رکوردهای یک جدول داریم و در ادامه به معرفی سه روش جهت بازیابی رکوردهای حذف شده می پردازیم. از آنجایی که عملیات حذف رکوردها بوسیله یکی از سه دستور Delete، Drop و Truncate در sql server انجام می شود هر یک از این سه دستور را معرفی و با یکدیگر مقایسه می کنیم و تفاوت استفاده از نرم افزارهای مختلف جهت بازیابی رکوردهای حذف شده با استفاده از هر یک از این سه دستور را بررسی می کنیم:
سپس با استفاده از مثال های مختلف، کاربردی عملی از سه روش اشاره شده در بازیابی رکوردهای حذف شده با هر کدام از دستور های Delete، Drop و Truncate را خواهیم دید. در پایان به مقایسه هر کدام از روش های بازیابی رکوردهای حذف شده در SQLSERVER و شرایط مناسب جهت استفاده از هر یک می پردازیم.
پیش نمایش آموزش بازیابی رکوردهای حذف شده در SQLSERVER
دمو زمان فیلم: 11:41