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