โฮมเพจ » ทำอย่างไร » Batch Script เพื่อสำรองฐานข้อมูลเซิร์ฟเวอร์ SQL ทั้งหมดของคุณ

    Batch Script เพื่อสำรองฐานข้อมูลเซิร์ฟเวอร์ SQL ทั้งหมดของคุณ

    เราได้กล่าวถึงวิธีการสำรองฐานข้อมูล SQL Server จากบรรทัดคำสั่งแล้วถ้าคุณต้องการสำรองฐานข้อมูลทั้งหมดในครั้งเดียวล่ะ คุณสามารถสร้างชุดสคริปต์ที่รันคำสั่งสำรองข้อมูลสำหรับแต่ละฐานข้อมูล แต่สคริปต์นี้จะต้องมีการปรับปรุงทุกครั้งที่มีการเพิ่มหรือลบฐานข้อมูล นอกจากนี้การสำรองฐานข้อมูลทั้งหมดจะถูกผนวกเข้ากับไฟล์เดียวซึ่งจะเพิ่มขึ้นตามขนาดของการสำรองข้อมูลใหม่ทุกครั้งที่เรียกใช้ แต่ในความเป็นจริง“ ตั้งค่าและลืมมัน” เราจะสร้างชุดสคริปต์ที่จะปรับให้เข้ากับ SQL Server ของคุณเมื่อฐานข้อมูลใหม่ถูกเพิ่มและลบออก.

    เพื่อให้ตรงประเด็นนี่คือสคริปต์สำรอง:

    @ECHO OFF
    SETLOCAL

    REM รับวันที่ในรูปแบบ YYYY-MM-DD (ถือว่าสถานที่คือสหรัฐอเมริกา)
    FOR / F“ โทเค็น = 1,2,3,4 delims = /” %% A IN ('วันที่ / T') ตั้งวันนี้วันที่ = %% D - %% B - %% C

    REM สร้างรายการฐานข้อมูลเพื่อสำรองข้อมูล
    SET DBList =% SystemDrive% SQLDBList.txt
    SqlCmd -E -S MyServer -h-1 -W -Q“ ตั้ง NoCount ON; เลือกชื่อจาก master.dbo.sys ฐานข้อมูลที่ [ชื่อ] ไม่อยู่ ('ต้นแบบ', 'แบบจำลอง', 'msdb', 'tempdb')”>“% DBList%”

    REM ทำการสำรองข้อมูลแต่ละฐานข้อมูลโดยเตรียมวันที่ให้เป็นชื่อไฟล์
    FOR / F“ tokens = *” %% I IN (% DBList%) ทำ (
    ECHO การสำรองฐานข้อมูล: %% I
    SqlCmd -E -S MyServer -Q“ แบ็กอัพฐานข้อมูล [%% I] ไปยังดิสก์ = "D: สำรอง% ตอนนี้วันที่% _ %% I.bak"”
    ECHO.
    )

    REM ทำความสะอาดไฟล์ชั่วคราว
    ถ้ามี“% DBList%” DEL / F / Q“% DBList%”

    ENDLOCAL

    สมมติว่าวันที่ 1/13/2009 และคุณมี 3 ฐานข้อมูลชื่อ 'MyDB', 'AnotherDB' และ 'ชื่อฐานข้อมูลด้วย Spaces' สคริปต์จะสร้างไฟล์ 3 ไฟล์ในตำแหน่งสำรองที่ระบุ:

    • 2009-01-13_AnotherDB.bak
    • 2009-01-13_DB ชื่อที่มี Spaces.bak
    • 2009-01-13_MyDB.bak

    การปรับแต่งและเรียกใช้สคริปต์ชุดงาน

    แน่นอนคุณจะต้องปรับแต่งสคริปต์ให้เข้ากับสภาพแวดล้อมของคุณดังนั้นนี่คือสิ่งที่คุณต้องทำ:

    • หากสถานที่ตั้งเครื่องของคุณไม่ได้ตั้งค่าเป็นสหรัฐอเมริกาคำสั่ง 'วันที่ / T' อาจไม่ส่งคืนวันที่ในรูปแบบ“ วันที่ 01/13/2009” หากเป็นกรณีนี้ตัวแปร NowDate จะไม่สร้างรูปแบบที่ต้องการและควรปรับเปลี่ยน (1 สถานที่)
    • เปลี่ยน 'MyServer' เป็นชื่อของ SQL Server ของคุณ (เพิ่มชื่ออินสแตนซ์ถ้ามี) (2 แห่ง)
    • ฐานข้อมูลชื่อ 'master', 'model', 'msdb' และ 'tempdb' เป็นฐานข้อมูลที่มาพร้อมกับ SQL Server คุณสามารถเพิ่มชื่อฐานข้อมูลเพิ่มเติมลงในรายการนี้หากคุณไม่ต้องการให้สำรองข้อมูล (1 สถานที่)
    • เปลี่ยนตำแหน่งสำรองจาก 'D: Backup' เป็นตำแหน่งที่คุณต้องการจัดเก็บไฟล์สำรองฐานข้อมูล.

    เมื่อคุณปรับแต่งชุดสคริปต์แล้วให้กำหนดเวลาให้ทำงานผ่าน Windows Task Scheduler ในฐานะผู้ใช้ที่มีสิทธิ์ผู้ดูแลระบบและคุณพร้อม.