الصفحة الرئيسية » howto » كيفية النسخ الاحتياطي لقواعد بيانات SQL لمشاركة الشبكة

    كيفية النسخ الاحتياطي لقواعد بيانات SQL لمشاركة الشبكة

    يجب إجراء نسخ احتياطي لقواعد بيانات SQL بشكل منتظم. لقد قمنا بالفعل بتغطية طرق تمكنك من النسخ الاحتياطي لكافة قواعد بيانات خادم SQL الخاصة بك بسهولة إلى محرك أقراص ثابت محلي ، ولكن هذا لا يحمي ضد محرك الأقراص و / أو فشل النظام. كطبقة إضافية من الحماية ضد هذا النوع من الكوارث ، يمكنك نسخ أو إنشاء نسخ احتياطية بشكل مباشر على مشاركة عبر الشبكة.

    النسخ الاحتياطي محليًا ثم انسخ إلى مشاركة الشبكة

    الطريقة المفضلة والأكثر مباشرة لإنجاز هذه المهمة هي ببساطة إنشاء نسخة احتياطية محلية من قاعدة البيانات ثم نسخ ملف النسخة الاحتياطية المعنية إلى مشاركة شبكة. يمكنك القيام بذلك عن طريق إنشاء برنامج نصي دفعي يبدو كالتالي:

    SET LocalFolder = C: برنامج FilesMicrosoft SQL ServerMSSQL.1MSSQLBackup
    SqlCmd -E -Q “Backup Database MyDB To Disk ="٪ LocalFolder٪ MyDB.bak "”
    XCopy "٪ LocalFolder٪ MyDB.bak" "\ 192.168.16.55BackupDatabases" / Z / V
    DEL "٪ LocalFolder٪ MyDB.bak"

    يقوم هذا البرنامج النصي التالي (سطر سطراً):

    1. يضبط متغير إلى دليل النسخ الاحتياطي SQL المحلي.
    2. إنشاء نسخة احتياطية SQL من MyDB (باستخدام مصادقة Windows) إلى دليل النسخ الاحتياطي SQL المحلي.
    3. نسخ ملف النسخ الاحتياطي المحلي إلى مشاركة شبكة.
    4. يحذف ملف النسخة الاحتياطية المحلية.

    مرة أخرى ، هذا هو الأسلوب المفضل لأنه يعمل خارج منطقة الجزاء واحتمال فشل النسخ الاحتياطي الحد الأدنى منذ إنشاء النسخة الاحتياطية على قرص محلي. ومع ذلك ، إذا لم يكن لديك مساحة قرص كافية لتخزين النسخ المحلية من ملفات النسخ الاحتياطي سوف يفشل هذا الإجراء. في هذا الحدث ، ستحتاج إلى إضافة مساحة قرص إضافية أو نسخة احتياطية مباشرة إلى مشاركة عبر شبكة.

    النسخ الاحتياطي مباشرة إلى مشاركة الشبكة

    عادة ، عند محاولة إنشاء نسخة احتياطية مباشرة إلى مشاركة شبكة باستخدام أمر مثل:

    SqlCmd -E -Q “Backup Database MyDB To Disk =" \ 192.168.16.55BackupDatabasesMyDB.bak "”

    من المرجح أن تحصل على خطأ على غرار ما يلي:

    Msg 3201، Level 16، State 1، Server JF، Line 1
    لا يمكن فتح جهاز النسخ الاحتياطي '\ 192.168.16.55BackupDatabasesMyDB.bak'. خطأ في نظام التشغيل 5 (تم رفض الوصول.).
    Msg 3013، Level 16، State 1، Server JF، Line 1
    يتم إنهاء BACKUP DATABASE بشكل غير طبيعي.

    يحدث هذا الخطأ على الرغم من حقيقة أنك قمت بتشغيل الأمر النسخ الاحتياطي لـ SQL باستخدام مصادقة Windows (رمز التبديل -E) وحساب Windows كقدرة على الوصول إلى الملفات ونسخها إلى المشاركة من خلال مستكشف Windows.

    سبب فشل هذا الإجراء لأنه يتم تنفيذ الأمر SQL داخل حدود الحساب الذي تعمل عليه خدمة SQL Server. عند عرض قائمة الخدمات على جهاز الكمبيوتر الخاص بك ، سترى على الأرجح خدمة SQL Server التي تعمل كـ (عمود تسجيل الدخول باسم) إما النظام المحلي أو خدمة الشبكة التي هي حسابات النظام التي ليس لها وصول إلى الشبكة.

    في نظامنا ، يفشل الأمر النسخ الاحتياطي لأمر مشاركة الشبكة لأن لدينا خدمة SQL Server تعمل كنظام محلي والتي ، مرة أخرى ، لا يمكن الوصول إلى أي موارد الشبكة.

    من أجل السماح لـ SQL بالنسخ الاحتياطي مباشرة إلى مشاركة عبر الشبكة ، يجب علينا تشغيل خدمة SQL Server كحساب محلي يتمتع بحق الوصول إلى موارد الشبكة.

    تحرير خصائص خدمة SQL Server وفي علامة التبويب تسجيل الدخول ، قم بتكوين الخدمة لتعمل كحساب بديل له حقوق الوصول إلى الشبكة.

    عند النقر فوق "موافق" ، ستحصل على مطالبة بأن الإعدادات لن تصبح نافذة المفعول حتى يتم إعادة تشغيل الخدمة.

    أعد تشغيل الخدمة.

    يجب أن تظهر قائمة الخدمات الآن تشغيل خدمة SQL Server كحساب قمت بتكوينه.

    الآن عند تشغيل الأمر للنسخ الاحتياطي مباشرة إلى مشاركة شبكة:

    SqlCmd -E -Q “Backup Database MyDB To Disk =" \ 192.168.16.55BackupDatabasesMyDB.bak "”

    سترى رسالة نجاح:

    معالجة 152 صفحة لقاعدة البيانات 'MyDB' ، ملف 'MyDB' في الملف 1.
    تمت معالجة صفحتين لقاعدة البيانات 'MyDB' ، ملف 'MyDB_log' في الملف 1.
    نجحت قاعدة البيانات الاحتياطية في معالجة 154 صفحة في 0.503 ثانية (2.493 ميجابايت / ثانية).

    مع ملف النسخة الاحتياطية الآن في دليل مشاركة الشبكة:

    اعتبارات مشاركة الشبكة

    من المهم ملاحظة أن الأمر النسخ الاحتياطي يتوقع أن يكون قادراً على الاتصال مباشرة بمشاركة الشبكة دون المطالبة ببيانات الاعتماد. الحساب الذي قمت بتكوين خدمة SQL Server لتشغيله كما يجب أن يكون لديه اتصال موثوق به مع مشاركة الشبكة حيث تسمح بيانات الاعتماد الخاصة بالوصول ، وإلا قد يحدث خطأ مثل هذا:

    Msg 3201، Level 16، State 1، Server JF، Line 1
    لا يمكن فتح جهاز النسخ الاحتياطي '\ 192.168.16.55BackupDatabasesMyDB.bak'. خطأ في نظام التشغيل 1326 (فشل في تسجيل الدخول: اسم مستخدم غير معروف أو كلمة مرور غير صالحة.).
    Msg 3013، Level 16، State 1، Server JF، Line 1
    يتم إنهاء BACKUP DATABASE بشكل غير طبيعي.

    يشير هذا الخطأ إلى أن اسم المستخدم وكلمة المرور للحساب لم يتم قبولهما بواسطة مشاركة الشبكة وفشل الأمر.

    هناك مشكلة أخرى يجب وضعها في الاعتبار وهي أن النسخ الاحتياطي يتم إجراؤه مباشرة إلى مورد شبكة ، لذلك فإن أي خلل في اتصال الشبكة قد يتسبب في فشل النسخة الاحتياطية. لهذا السبب ، يجب عليك الاحتفاظ بنسخة احتياطية فقط من مواقع الشبكة التي تكون مستقرة (على الأرجح ليست شبكة ظاهرية خاصة).

    الآثار الأمنية

    كما ذكرنا سابقًا ، يفضل استخدام الطريقة التي تقوم فيها بالنسخ الاحتياطي محليًا ثم النسخ إلى مشاركة عبر شبكة حيث أنه يسمح لك بتشغيل خدمة SQL كحساب مع وصول النظام المحلي فقط.

    من خلال تشغيل الخدمة كحساب بديل ، يمكنك فتح الباب أمام مشكلات الأمان المحتملة. على سبيل المثال ، يمكن تنفيذ برنامج نصي SQL ضار تحت موارد حساب الهجوم والهجوم البديل. بالإضافة إلى ذلك ، فإن أي تغييرات على الحساب المعني (تغييرات كلمة المرور / انتهاء الصلاحية أو حذف / تعطيل الحساب) سيؤدي إلى فشل بدء تشغيل خدمة SQL Server.

    من المهم الاحتفاظ بهذه النقاط في الاعتبار إذا قمت بتشغيل مثيل SQL Server الخاص بك باستخدام حساب بديل. في حين أن هذه لا تظهر سدادات إذا تم اتخاذ الاحتياطات المناسبة ، يجب عليك التفكير في إضافة مساحة إضافية على القرص الصلب ثم تنفيذ النسخ الاحتياطي المحلي ونسخ بحيث يمكنك تشغيل خدمة SQL باستخدام حساب محلي.