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

    دفعة البرنامج النصي لنسخ كل قواعد البيانات الخاصة بك خادم SQL

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

    للحصول على حق النقطة ، هذا هو البرنامج النصي النسخ الاحتياطي:

    @صدى خارج
    SETLOCAL

    REM الحصول على التاريخ بالتنسيق YYYY-MM-DD (يفترض أن اللغة هي الولايات المتحدة)
    FOR / F “tokens = 1،2،3،4 delims = /” ٪٪ A IN ('Date / T') DO SET NowDate = ٪٪ D - ٪٪ B - ٪٪ C

    REM إنشاء قائمة من قواعد البيانات للنسخ الاحتياطي
    SET DBList =٪ SystemDrive٪ SQLDBList.txt
    SqlCmd -E -S MyServer -h-1 -W -Q "SET NoCount ON؛ SELECT Name FROM master.dbo.sysDatabases WHERE [اسم] NOT IN ('master'، 'model'، 'msdb'، 'tempdb') ">"٪ DBList٪ "

    REM النسخ الاحتياطي لكل قاعدة بيانات ، مقدما التاريخ إلى اسم الملف
    FOR / F "tokens = *" ٪٪ I IN (٪ DBList٪) DO (
    ECHO النسخ الاحتياطي لقاعدة البيانات: ٪٪ I
    SqlCmd -E -S MyServer -Q "BACKUP DATABASE [٪٪ I] TO Disk =" D: Backup٪ NowDate٪ _ ٪٪ I.bak "”
    صدى صوت.
    )

    REM قم بتنظيف ملف مؤقت
    إذا كان EXIST "٪ DBList٪" DEL / F / Q "٪ DBList٪"

    ENDLOCAL

    بافتراض أن التاريخ هو 1/13/2009 ولديك 3 قواعد بيانات باسم "MyDB" و "AnotherDB" و "اسم DB مع Spaces" ، سينتج البرنامج النصي 3 ملفات في موقع النسخ الاحتياطي المحدد:

    • 2009-01-13_AnotherDB.bak
    • 2009-01-13_DB Name with Spaces.bak
    • 2009-01-13_MyDB.bak

    تخصيص وتشغيل البرنامج النصي الدفعي

    بالطبع ، ستحتاج إلى تخصيص النص البرمجي لبيئتك ، لذلك فإليك ما تحتاج إلى القيام به:

    • إذا لم يتم تعيين اللغة الخاصة بجهازك على الولايات المتحدة ، فقد لا يقوم الأمر 'Date / T' بإرجاع التاريخ بتنسيق “Tue 01/13/2009”. إذا كانت هذه هي الحالة ، لن ينتج المتغير NowDate التنسيق المطلوب ويجب ضبطه. (مكان واحد)
    • قم بتغيير "MyServer" ليكون اسم خادم SQL الخاص بك (أضف اسم المثيل إذا كان ذلك ممكنًا). (مكانان)
    • قواعد البيانات المسماة "master" و "model" و "msdb" و "tempdb" هي قواعد بيانات يتم شحنها مع SQL Server. يمكنك إضافة أسماء قواعد بيانات إضافية إلى هذه القائمة إذا كنت لا تريد نسخها احتياطياً. (مكان واحد)
    • قم بتغيير موقع النسخ الاحتياطي من 'D: Backup' إلى المكان الذي تريد تخزين ملفات النسخ الاحتياطي لقاعدة البيانات فيه.

    بمجرد قيامك بتخصيص البرنامج النصي الدفعي ، قم بجدولة تشغيله عبر برنامج جدولة مهام Windows كمستخدم له حقوق المسؤول وتم تعيينك بالكامل.