Backup And Restore SQL Server 2008 by Mohamed Shalaby
الغرض من العرض إيضاح كيفية استخدام النسخ الاحتياطي  إيضاح جدولة النسخ الاحتياطي  إيضاح كيفية استرجاع قاعدة البيانات لأي وقت
المعطيات  : لدينا قاعدة بيانات اسمها  BR لابد لامكانية استرجاع قاعدة البيانات لأي وقت أن يكون من خصائص قاعدة البيانات Recovery Model = FULL جميع هذه الإجراءات يتم عملها من خلال SQL Server Management Studio
 
نحتاج إلى تشغيل خدمة SQL Server Agent وذلك للتمكن من جدولة النسخ الاحتياطي Right Click->Start
أول خطوة للنسخ الاحتياطي هي نسخة احتياطية كاملة وهذه سوف نقوم بتنفيذها يدويا لأول مرة كما يمكن جدولتها لتنفذ بشكل دوري على نطاق زمني أوسع من النسخ الاحتياطي الجزئي
عند ظهور مربع حوار النسخ الاحتياطي تكون هناك قيمة افتراضية لوجهة النسخ Destination وسوف نقوم بإزالة هذا المسار Remove ثم نقوم باضافة المسار الذي سوف نقوم بالنسخ إليه Add
 
يتم تحديد ملف النسخ الاحتياطي
Options خيارات النسخ الاحتياطي قمنا باختيار Verify backup وذلك للتأكد من صحة النسخ الاحتياطي .
 
 
جدولة النسخ الاحتياطي سوف نبدأ خلال الخطوات القادمة بعمل جدولة لخطة نسخ احتياطي مجدولة كالآتي نسخ احتياطي تراكمي  Differential   يوميا الساعة  12  صباحا . نسخ احتياطي لل  Transaction Log   كل ساعة . ليست هذه الخطة نموذجية ولكنها لإيضاح الفكرة والمفروض أن يكون لكل مؤسسة خطتها طبقا لاحتياجاتها ومدى تحملها لفقد البيانات .
سوف نحتاج في الجدولة الزمنية للنسخ الاحتياطي إلى كتابة الأمر الذي يقوم بعملية النسخ  وهذا سوف نستخدم له وسيلة مساعدة وهي أننا سوف ندخل إلى إجراءات النسخ الذي نحتاج أداءه ومن ثم نستخدم زر Script أعلى كل الشاشات للحصول على الأمر بعد تغيير الإعدادات اللازمة اخترنا في هذه الشاشة نوع النسخ  Differential اخترنا نفس ملف النسخ السابق
نظرا لأن النسخ سوف يكون متكررا فقد اخترنا Append to existing backup وهذا حتى يكون النسخ تراكميا
استخدمنا الأمر Script للحصول على سلسلة الأوامر التي تجري هذا النسخ ولن ننفذ هذا النسخ في الوقت الراهن سنكتفي بنسخ الأمر .
هنا تظهر سلسلة الأوامر التي تنفذ عملية النسخ الاحتياطي وتدقيقه وقد تم نسخها إلى الحافظة  Clipboard
سوف نبدأ بانشاء جدول زمني لغرض استخدامه في الجدولة ويجب أن تكون خدمة  SQL Server Agent   تعمل الجدول الزمني  Schedule   لا يقتصر استخدامه على مهمة واحدة بل يمكن إعادة استخدامه
حددنا هنا متغيرات الجدول الزمني الاسم التكرار يوميا ساعة التكرار  12  صباحا بدون تاريخ نهاية
تعريف شخص  /  أشخاص بحيث يتم إعلامهم بنتيجة عملية النسخ الاحتياطي
حددنا للشخص أو المشغل : الاسم البريد الالكتروني أوقات وايام التنبيه
انشاء جدول زمني آخر يتكرر كل ساعة
نبدأ بانشاء مهمة اجراء النسخ الاحتياطي آليا وهذا من خلال قائمة  SQL Server Agent ->Jobs->Right Click -> New Job..
المتغيرات العامة للمهمة  : الاسم الوصف
خصائص الجدول للمهمة سوف نختار الجدول الذي قمنا بانشائه سابقا بضغط Pick
 
 
التبويب  Steps  منه يتم تعريف الخطوات التي سوف تحتويها المهمة يلاحظ ان المهمة يمكن أن تحتوي خطوات كثيرة وإن كنا سوف نقتصر على خطوة واحدة ونضيفها بالضغط على  New
لكل خطوة من خطوات المهمة يجب تعريف النوع ثم باقي التفاصيل وهذا يعطي إمكانيات كثيرة قمنا بتحديد  النوع  T-SQL قاعدة البيانات الأمر والذي نسخناه من مهمة النسخ التجريبية
 
 
هنا في هذا التبويب  نضع إعدادات التنبيه في حالة نجاح أوفشل المهمة
قمنا باختيار  Operator   الذي عرفناه سابقا قمنا بتحديد تنبيهه بالايميل عند فشل المهمة هذه الخطوات اختيارية
سوف نبدأ بتجهيز لأمر النسخ الاحتياطي والذي سوف يتم تنفيذه بشكل متكرر والغرض من هذه الخطوة هو نسخ ملفات اللوج  Transaction log   بشكل دوري بحيث يمكن الرجوع بقاعدة البيانات لأي لحظة  ما سنقوم به ليس عملية نسخ فعلية ولكنه بغرض نسخ الأمر فقط لاستخدامه بشكل جدولة
نفس الخطوات السابقة في عملية النسخ ولكن الفرق هو  : اخترنا النوع Transaction Log قمنا بتحديد ملف مختلف للنسخ وهذا مستحسن
الخيارات الآتية في التبويب الثاني  : Append  وذلك لتراكم النسخ في نفس الملف Verify   وذلك للتحقق من صحة النسخ Truncate Trans. Log وذلك لتصغير حجم اللوج بعد النسخ
قمنا بنسخ الأمر وذلك لاستخدامه في عملية الجدولة  ولن نقوم بتنفيذ المهمة
والآن سوف نبدأ بعمل جدول زمني لعملية النسخ على مدار كل ساعة ونفس الخطوات السابقة ولكن مع اختيار جدول زمني مختلف
 
 
 
 
 
 
يمكن تنفيذ المهام المجدولة يدويا وذلك بغرض التجربة
يمكن مراقبة سجل أحداث المهام ونجاحها وفشلها ووقت تنفيذها
انتهت مهام النسخ وجدولتها وسنفترض أن  لدينا جدول اسمه  Table1  وسوف نتابع بعض عمليات الإدراج والحذف منه
 
بعد أن أدرجنا سجلا في قاعدة البيانات سوف نقوم بتنفيذ مهمة النسخ الاحتياطي يدويا والمفترض أن الجدول الزمني سوف يكون فعالا في الحياة الطبيعية ولكن ذلك بغرض إيضاح سيناريو الاسترجاع
 
الآن أصبح لدينا ثلاثة سجلات  وقمنا بعمل عملية نسخ احتياطي  Transaction Log   بعد كل سجل
يلاحظ في الشكل السابق أننا قمنا بآخر عملية نسخ الساعة  22:07 الآن سوف نحذف كافة السجلات في الجدول  ( عن طريق الخطأ  !!) الساعة  22:09
طالما أن قاعدة البيانات تعمل ولم تحدث كارثة فإن أول إجراء للاسترجاع يجب أن يكون النسخ الاحتياطي
سوف نبدأ بعملية استرجاع قاعدة البيانات
قمنا بعمل تحديد للنسخة الكاملة التي تم أخذها وكذلك جميع نسخ ال  Transaction log   التي تم أخذها قبل حدوث أمر الإلغاء
 
ويلاحظ هنا أن جميع السجلات التي تم حذفها قد عادت
يلاحظ أنه كان يمكن استرجاع النسخ واحدا واحدا  تلو الآخر حسب الترتيب الزمني لاستعادة قاعدة البيانات إلى حالتها في وقت معين كما يمكن استرجاع من نسخة  Transaction Log  إلى وقت معين وذلك بضغط  To point in time
وكما يظهر هنا فإنه يمكن تحديد الوقت الذي تريد إرجاع قاعدة البيانات له وذلك حسب التوقيت الذي حدثت فيه المشكلة
السيناريوهات لا تنتهي ولكن ينبغي التأكيد على النقاط الآتية  : يجب الاهتمام البالغ بالنسخ الاحتياطي يجب أن يكون النسخ موجود في مكان آخر غير مكان البيانات يجب أن يكون النسخ على أقل الأحوال على قرص أو وسيط آخر غير قرص البيانات يمكن أن يتم ضغط البيانات يدويا أو من خلال عملية النسخ ولكن بعد أن يتم التاكد من صحة عملية النسخ

Backup and restore sql server 2008

  • 1.
    Backup And RestoreSQL Server 2008 by Mohamed Shalaby
  • 2.
    الغرض من العرضإيضاح كيفية استخدام النسخ الاحتياطي إيضاح جدولة النسخ الاحتياطي إيضاح كيفية استرجاع قاعدة البيانات لأي وقت
  • 3.
    المعطيات :لدينا قاعدة بيانات اسمها BR لابد لامكانية استرجاع قاعدة البيانات لأي وقت أن يكون من خصائص قاعدة البيانات Recovery Model = FULL جميع هذه الإجراءات يتم عملها من خلال SQL Server Management Studio
  • 4.
  • 5.
    نحتاج إلى تشغيلخدمة SQL Server Agent وذلك للتمكن من جدولة النسخ الاحتياطي Right Click->Start
  • 6.
    أول خطوة للنسخالاحتياطي هي نسخة احتياطية كاملة وهذه سوف نقوم بتنفيذها يدويا لأول مرة كما يمكن جدولتها لتنفذ بشكل دوري على نطاق زمني أوسع من النسخ الاحتياطي الجزئي
  • 7.
    عند ظهور مربعحوار النسخ الاحتياطي تكون هناك قيمة افتراضية لوجهة النسخ Destination وسوف نقوم بإزالة هذا المسار Remove ثم نقوم باضافة المسار الذي سوف نقوم بالنسخ إليه Add
  • 8.
  • 9.
    يتم تحديد ملفالنسخ الاحتياطي
  • 10.
    Options خيارات النسخالاحتياطي قمنا باختيار Verify backup وذلك للتأكد من صحة النسخ الاحتياطي .
  • 11.
  • 12.
  • 13.
    جدولة النسخ الاحتياطيسوف نبدأ خلال الخطوات القادمة بعمل جدولة لخطة نسخ احتياطي مجدولة كالآتي نسخ احتياطي تراكمي Differential يوميا الساعة 12 صباحا . نسخ احتياطي لل Transaction Log كل ساعة . ليست هذه الخطة نموذجية ولكنها لإيضاح الفكرة والمفروض أن يكون لكل مؤسسة خطتها طبقا لاحتياجاتها ومدى تحملها لفقد البيانات .
  • 14.
    سوف نحتاج فيالجدولة الزمنية للنسخ الاحتياطي إلى كتابة الأمر الذي يقوم بعملية النسخ وهذا سوف نستخدم له وسيلة مساعدة وهي أننا سوف ندخل إلى إجراءات النسخ الذي نحتاج أداءه ومن ثم نستخدم زر Script أعلى كل الشاشات للحصول على الأمر بعد تغيير الإعدادات اللازمة اخترنا في هذه الشاشة نوع النسخ Differential اخترنا نفس ملف النسخ السابق
  • 15.
    نظرا لأن النسخسوف يكون متكررا فقد اخترنا Append to existing backup وهذا حتى يكون النسخ تراكميا
  • 16.
    استخدمنا الأمر Scriptللحصول على سلسلة الأوامر التي تجري هذا النسخ ولن ننفذ هذا النسخ في الوقت الراهن سنكتفي بنسخ الأمر .
  • 17.
    هنا تظهر سلسلةالأوامر التي تنفذ عملية النسخ الاحتياطي وتدقيقه وقد تم نسخها إلى الحافظة Clipboard
  • 18.
    سوف نبدأ بانشاءجدول زمني لغرض استخدامه في الجدولة ويجب أن تكون خدمة SQL Server Agent تعمل الجدول الزمني Schedule لا يقتصر استخدامه على مهمة واحدة بل يمكن إعادة استخدامه
  • 19.
    حددنا هنا متغيراتالجدول الزمني الاسم التكرار يوميا ساعة التكرار 12 صباحا بدون تاريخ نهاية
  • 20.
    تعريف شخص / أشخاص بحيث يتم إعلامهم بنتيجة عملية النسخ الاحتياطي
  • 21.
    حددنا للشخص أوالمشغل : الاسم البريد الالكتروني أوقات وايام التنبيه
  • 22.
    انشاء جدول زمنيآخر يتكرر كل ساعة
  • 23.
    نبدأ بانشاء مهمةاجراء النسخ الاحتياطي آليا وهذا من خلال قائمة SQL Server Agent ->Jobs->Right Click -> New Job..
  • 24.
  • 25.
    خصائص الجدول للمهمةسوف نختار الجدول الذي قمنا بانشائه سابقا بضغط Pick
  • 26.
  • 27.
  • 28.
    التبويب Steps منه يتم تعريف الخطوات التي سوف تحتويها المهمة يلاحظ ان المهمة يمكن أن تحتوي خطوات كثيرة وإن كنا سوف نقتصر على خطوة واحدة ونضيفها بالضغط على New
  • 29.
    لكل خطوة منخطوات المهمة يجب تعريف النوع ثم باقي التفاصيل وهذا يعطي إمكانيات كثيرة قمنا بتحديد النوع T-SQL قاعدة البيانات الأمر والذي نسخناه من مهمة النسخ التجريبية
  • 30.
  • 31.
  • 32.
    هنا في هذاالتبويب نضع إعدادات التنبيه في حالة نجاح أوفشل المهمة
  • 33.
    قمنا باختيار Operator الذي عرفناه سابقا قمنا بتحديد تنبيهه بالايميل عند فشل المهمة هذه الخطوات اختيارية
  • 34.
    سوف نبدأ بتجهيزلأمر النسخ الاحتياطي والذي سوف يتم تنفيذه بشكل متكرر والغرض من هذه الخطوة هو نسخ ملفات اللوج Transaction log بشكل دوري بحيث يمكن الرجوع بقاعدة البيانات لأي لحظة ما سنقوم به ليس عملية نسخ فعلية ولكنه بغرض نسخ الأمر فقط لاستخدامه بشكل جدولة
  • 35.
    نفس الخطوات السابقةفي عملية النسخ ولكن الفرق هو : اخترنا النوع Transaction Log قمنا بتحديد ملف مختلف للنسخ وهذا مستحسن
  • 36.
    الخيارات الآتية فيالتبويب الثاني : Append وذلك لتراكم النسخ في نفس الملف Verify وذلك للتحقق من صحة النسخ Truncate Trans. Log وذلك لتصغير حجم اللوج بعد النسخ
  • 37.
    قمنا بنسخ الأمروذلك لاستخدامه في عملية الجدولة ولن نقوم بتنفيذ المهمة
  • 38.
    والآن سوف نبدأبعمل جدول زمني لعملية النسخ على مدار كل ساعة ونفس الخطوات السابقة ولكن مع اختيار جدول زمني مختلف
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
    يمكن تنفيذ المهامالمجدولة يدويا وذلك بغرض التجربة
  • 46.
    يمكن مراقبة سجلأحداث المهام ونجاحها وفشلها ووقت تنفيذها
  • 47.
    انتهت مهام النسخوجدولتها وسنفترض أن لدينا جدول اسمه Table1 وسوف نتابع بعض عمليات الإدراج والحذف منه
  • 48.
  • 49.
    بعد أن أدرجناسجلا في قاعدة البيانات سوف نقوم بتنفيذ مهمة النسخ الاحتياطي يدويا والمفترض أن الجدول الزمني سوف يكون فعالا في الحياة الطبيعية ولكن ذلك بغرض إيضاح سيناريو الاسترجاع
  • 50.
  • 51.
    الآن أصبح لديناثلاثة سجلات وقمنا بعمل عملية نسخ احتياطي Transaction Log بعد كل سجل
  • 52.
    يلاحظ في الشكلالسابق أننا قمنا بآخر عملية نسخ الساعة 22:07 الآن سوف نحذف كافة السجلات في الجدول ( عن طريق الخطأ !!) الساعة 22:09
  • 53.
    طالما أن قاعدةالبيانات تعمل ولم تحدث كارثة فإن أول إجراء للاسترجاع يجب أن يكون النسخ الاحتياطي
  • 54.
    سوف نبدأ بعمليةاسترجاع قاعدة البيانات
  • 55.
    قمنا بعمل تحديدللنسخة الكاملة التي تم أخذها وكذلك جميع نسخ ال Transaction log التي تم أخذها قبل حدوث أمر الإلغاء
  • 56.
  • 57.
    ويلاحظ هنا أنجميع السجلات التي تم حذفها قد عادت
  • 58.
    يلاحظ أنه كانيمكن استرجاع النسخ واحدا واحدا تلو الآخر حسب الترتيب الزمني لاستعادة قاعدة البيانات إلى حالتها في وقت معين كما يمكن استرجاع من نسخة Transaction Log إلى وقت معين وذلك بضغط To point in time
  • 59.
    وكما يظهر هنافإنه يمكن تحديد الوقت الذي تريد إرجاع قاعدة البيانات له وذلك حسب التوقيت الذي حدثت فيه المشكلة
  • 60.
    السيناريوهات لا تنتهيولكن ينبغي التأكيد على النقاط الآتية : يجب الاهتمام البالغ بالنسخ الاحتياطي يجب أن يكون النسخ موجود في مكان آخر غير مكان البيانات يجب أن يكون النسخ على أقل الأحوال على قرص أو وسيط آخر غير قرص البيانات يمكن أن يتم ضغط البيانات يدويا أو من خلال عملية النسخ ولكن بعد أن يتم التاكد من صحة عملية النسخ