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

    Batch Script เพื่อให้การบำรุงรักษาฐานข้อมูลเซิร์ฟเวอร์ SQL ง่าย

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

    การย่อ / ย่อฐานข้อมูล [/ Compact]

    มีหลายปัจจัยที่สนับสนุนพื้นที่ดิสก์จริงที่ฐานข้อมูล SQL Server ใช้ เพียงเพื่อชื่อไม่กี่:

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

    การกระชับ (หรือย่อขนาด) ฐานข้อมูลจะเรียกคืนพื้นที่ว่างในดิสก์ที่ไม่ได้ใช้ สำหรับฐานข้อมูลขนาดเล็ก (200 MB หรือน้อยกว่า) สิ่งนี้มักจะไม่มากนัก แต่สำหรับฐานข้อมูลขนาดใหญ่ (1 GB หรือมากกว่า) พื้นที่ที่เรียกคืนอาจมีความสำคัญ.

    ทำดัชนีฐานข้อมูลใหม่ [/ สร้างดัชนีใหม่]

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

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

    การยืนยันความถูกต้อง [/ ตรวจสอบ]

    เพื่อให้ฐานข้อมูลยังคงใช้งานได้และให้ผลลัพธ์ที่ถูกต้องมีรายการความสมบูรณ์จำนวนมากที่ต้องมี โชคดีที่ปัญหาทางกายภาพและ / หรือความสมบูรณ์ของลอจิคัลไม่ธรรมดามาก แต่เป็นวิธีปฏิบัติที่ดีในการรันกระบวนการตรวจสอบความถูกต้องในฐานข้อมูลของคุณเป็นครั้งคราวและตรวจสอบผลลัพธ์.

    เมื่อกระบวนการตรวจสอบดำเนินการผ่านสคริปต์ของเราจะรายงานข้อผิดพลาดเท่านั้นดังนั้นจึงไม่มีข่าวที่เป็นข่าวดี.

    การใช้งานสคริปต์

    สคริปต์แบตช์ SQLMaint เข้ากันได้กับ SQL 2005 และสูงกว่าและต้องรันบนเครื่องที่มีเครื่องมือ SQLCMD ติดตั้ง (ติดตั้งเป็นส่วนหนึ่งของการติดตั้ง SQL Server) ขอแนะนำให้คุณวางสคริปต์นี้ไว้ในตำแหน่งที่ตั้งไว้ในตัวแปร Windows PATH ของคุณ (เช่น C: Windows) เพื่อให้สามารถเรียกได้อย่างง่ายดายเหมือนกับแอปพลิเคชันอื่น ๆ จากบรรทัดคำสั่ง.

    หากต้องการดูข้อมูลช่วยเหลือเพียงป้อน:

    SQLMaint /?

    ตัวอย่าง

    หากต้องการเรียกใช้ compact และจากนั้นตรวจสอบในฐานข้อมูล“ MyDB” โดยใช้การเชื่อมต่อที่เชื่อถือได้:

    SQLMaint MyDB / Compact / Verify

    เมื่อต้องการเรียกใช้การทำดัชนีและกระชับข้อมูลบน“ MyDB” บนอินสแตนซ์ที่ชื่อว่า“ พิเศษ” โดยใช้ผู้ใช้“ sa” ด้วยรหัสผ่าน“ 123456”:

    SQLMaint MyDB /S:.Special / U: sa / P: 123456 / Reindex / Compact

    ใช้จากด้านในของสคริปต์ชุด

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

    ตัวอย่างเช่นสคริปต์นี้รันงานบำรุงรักษาทั้งหมดในทุกฐานข้อมูลที่ไม่ใช่ระบบบนการติดตั้ง SQL Server เริ่มต้นโดยใช้การตรวจสอบความน่าเชื่อถือ:

    @ECHO OFF
    SETLOCAL EnableExtensions
    SET DBList =”% TEMP% DBList.txt”
    SqlCmd -E -h-1 -w 300 -Q“ ตั้ง NoCount ON; เลือกชื่อจาก master.dbo.sys ฐานข้อมูลที่ชื่อไม่อยู่ใน ('ต้นแบบ', 'แบบจำลอง', 'msdb', 'tempdb')”>% DBList%
    FOR / F“ usebackq tokens = 1” %% i IN (% DBList%) DO (
    CALL SQLMaint“ %% i” / Compact / Reindex / Verify
    ECHO +++++++++++
    )
    หากมีอยู่% DBList% DEL / F / Q% DBList%
    ENDLOCAL

    ดาวน์โหลดสคริปต์ SQLMaint Batch จาก SysadminGeek.com