เมื่อฐานข้อมูล SQL ของคุณติดอยู่ในสถานะรอการกู้คืน ฐานข้อมูลของคุณจะไม่สามารถเข้าถึงได้และกระบวนการทำงานจะหยุดชะงัก คู่มือฉบับนี้ให้วิธีการแก้ไขปัญหาฐานข้อมูล SQL ที่รอการกู้คืนถึง 15 วิธีที่ได้รับการพิสูจน์แล้ว ตั้งแต่การรีสตาร์ทแบบง่ายๆ ไปจนถึงการซ่อมแซมฉุกเฉินขั้นสูง
1. ทำความเข้าใจสถานะรอการกู้คืนฐานข้อมูล SQL
ก่อนที่จะพยายามแก้ไขใดๆ การเข้าใจสาเหตุของปัญหาการกู้คืนฐานข้อมูล SQL ถือเป็นสิ่งสำคัญในการเลือกโซลูชันที่เหมาะสม
1.1 การกู้คืนที่รอดำเนินการหมายถึงอะไร?
การฟื้นตัวที่รออยู่บ่งชี้ว่า SQL Server ระบบตรวจพบว่าฐานข้อมูลต้องการการกู้คืน แต่ไม่สามารถเริ่มต้นกระบวนการกู้คืนได้ ต่างจากสถานะ "กำลังกู้คืน" ซึ่งแสดงว่าการกู้คืนกำลังดำเนินอยู่ สถานะ "รอการกู้คืน" หมายความว่าการกู้คืนถูกขัดขวางโดยอุปสรรค
สถานะฐานข้อมูลที่สำคัญ ได้แก่:
- ออนไลน์ – สถานะการทำงานปกติ
- การกู้คืน – กระบวนการกู้คืนกำลังทำงานอยู่
- การกู้คืนกำลังรอดำเนินการ – ไม่สามารถเริ่มกระบวนการกู้คืนได้
- สงสัย – ฐานข้อมูลมีข้อผิดพลาดร้ายแรง
- เมื่อเกิดเหตุฉุกเฉิน – การเข้าถึงแบบอ่านอย่างเดียวที่จำกัดสำหรับการซ่อมแซม
- ออฟไลน์ – ออฟไลน์ด้วยตนเอง
1.2 สาเหตุทั่วไปของการกู้คืนฐานข้อมูล SQL ที่รอดำเนินการ
ปัญหาที่ค้างอยู่ในการกู้คืนฐานข้อมูล SQL มักเกิดจากสาเหตุทั่วไปเหล่านี้:
- ไฟล์บันทึกธุรกรรมที่หายไปหรือเสียหาย (LDF)
- พื้นที่ดิสก์ไม่เพียงพอในระหว่างการดำเนินการกู้คืน
- ความล้มเหลวของฮาร์ดแวร์และระบบปิดตัวลงโดยไม่คาดคิด
- ไฟล์ฐานข้อมูล MDF เสียหาย
- ปัญหาการอนุญาตสิทธิ์ไฟล์ที่ขัดขวางการเข้าถึง
- SQL Server ปัญหาเรื่องเวลาในการเริ่มต้นบริการ
- ข้อผิดพลาดในการกำหนดค่า FILESTREAM
- เส้นทางไฟล์ไม่ถูกต้องหลังจากการโยกย้ายเซิร์ฟเวอร์
1.3 วิธีการตรวจสอบสถานะฐานข้อมูล
ตรวจสอบสถานะฐานข้อมูลของคุณโดยใช้วิธีการเหล่านี้:
การใช้ SQL Server สตูดิโอการจัดการ:
- เชื่อมต่อกับของคุณ SQL Server ตัวอย่าง
- แสดง ฐานข้อมูล โฟลเดอร์
- ค้นหาฐานข้อมูลที่แสดงสถานะ “(กำลังรอการกู้คืน)”
การใช้คำสั่ง T-SQL:
SELECT name, state_desc FROM sys.databases WHERE state_desc = 'RECOVERY_PENDING';
2. ขั้นตอนการวินิจฉัยเบื้องต้น
การวินิจฉัยที่ถูกต้องเป็นสิ่งสำคัญก่อนที่จะพยายามกู้คืนฐานข้อมูล SQL ที่รอการแก้ไข
2.1 ตรวจสอบ SQL Server บันทึกข้อผิดพลาด
บันทึกข้อผิดพลาดประกอบด้วยข้อมูลสำคัญเกี่ยวกับสาเหตุที่ทำให้เกิดสถานะรอการกู้คืน
- จุดเปิด SQL Server สตูดิโอการจัดการ
- นำทางไปยัง การจัดการ -> SQL Server ท่อน
- คลิกสองครั้งที่บันทึกปัจจุบันเพื่อดูข้อผิดพลาดล่าสุด
- ค้นหาข้อความแสดงข้อผิดพลาดที่เกี่ยวข้องกับฐานข้อมูลของคุณ
หรือใช้ T-SQL:
EXEC sp_readerrorlog;
2.2 ตรวจสอบบันทึกเหตุการณ์ Windows
- ข่าวประชาสัมพันธ์ คีย์ Windows + R
- ประเภท eventvwr.msc และกด Enter
- นำทางไปยัง แฟ้มบันทึกของ windows -> System และ การใช้งาน
- มองหา SQL Server ข้อผิดพลาดที่เกี่ยวข้องรอบเวลาที่ปัญหาเกิดขึ้น
2.3 ตรวจสอบการเข้าถึงไฟล์
- นำทางไปยังตำแหน่งไฟล์ฐานข้อมูลของคุณ
- ตรวจสอบว่าไฟล์ MDF และ LDF มีอยู่
- ตรวจสอบว่าไดรฟ์ออนไลน์และสามารถเข้าถึงได้หรือไม่
- ยืนยันว่าไดรฟ์เครือข่ายได้รับการติดตั้งอย่างถูกต้อง
3. วิธีแก้ไข #1: รีสตาร์ทเครื่อง SQL Server บริการของเรา
การเริ่มต้นใหม่ SQL Server บริการนี้ช่วยแก้ไขปัญหาการกู้คืนฐานข้อมูล SQL ที่ค้างอยู่จำนวนมาก ซึ่งเกิดจากปัญหาด้านเวลาหรือความขัดแย้งของทรัพยากรชั่วคราว
3.1 เมื่อการรีสตาร์ทบริการทำงาน
วิธีการนี้มีประสิทธิผลสำหรับ:
- การล็อกทรัพยากรชั่วคราวระหว่างการเริ่มต้นระบบ
- ความล่าช้าในการพร้อมใช้งานของไดรฟ์
- ปัญหาเรื่องเวลาการพึ่งพาบริการ
- ความขัดแย้งในการกำหนดค่าเล็กน้อย
3.2 วิธีการรีสตาร์ท SQL Server บริการของเรา
วิธีฮิต: SQL Server เครื่องมือจัดการการกำหนดค่า
- จุดเปิด SQL Server เครื่องมือจัดการการกำหนดค่า
- คลิก SQL Server บริการของเรา
- คลิกขวาที่ SQL Server เช่นเช่น SQL Server (MSSQLSERVER)
- เลือก เริ่มต้นใหม่
- รอจนกว่าบริการจะเริ่มต้นทำงานอย่างสมบูรณ์
วิธีที่ 2: คอนโซลบริการ
- ข่าวประชาสัมพันธ์ คีย์ Windows + R
- ประเภท services.msc และกด Enter
- หา SQL Server เช่นเช่น SQL Server (MSSQLSERVER)
- คลิกขวาและเลือก เริ่มต้นใหม่
วิธีที่ 3: PowerShell
Restart-Service -Name "MSSQLSERVER" -Force
3.3 การตรวจสอบหลังการรีสตาร์ท
- รอ 2-3 นาทีเพื่อให้ระบบเริ่มต้นทำงานอย่างสมบูรณ์
- ตรวจสอบสถานะฐานข้อมูลใน SSMS
- ตรวจสอบบันทึกข้อผิดพลาดสำหรับข้อความใหม่ ๆ
- ทดสอบการเชื่อมต่อฐานข้อมูล
4. แก้ไข #2: ตรวจสอบและแก้ไขปัญหาพื้นที่ดิสก์
พื้นที่ดิสก์ไม่เพียงพอเป็นสาเหตุทั่วไปของปัญหาการกู้คืนฐานข้อมูล SQL ที่ค้างอยู่ การดำเนินการกู้คืนต้องใช้พื้นที่เพิ่มเติมสำหรับไฟล์ชั่วคราวและการเติบโตของไฟล์บันทึก
4.1 การระบุปัญหาพื้นที่ดิสก์
- จุดเปิด File Explorer
- นำทางไปยังไดรฟ์ที่มีไฟล์ฐานข้อมูล
- ตรวจสอบพื้นที่ว่างที่ว่างอยู่
- ให้แน่ใจว่ามีพื้นที่ว่างอย่างน้อย 10-20% สำหรับการดำเนินการกู้คืน
4.2 การเพิ่มพื้นที่ว่างบนดิสก์
- ลบไฟล์ชั่วคราวที่ไม่จำเป็น
- ล้างข้อมูล SQL Server ไฟล์สำรองหากพื้นที่สำคัญ
- ย้ายไฟล์ที่ไม่จำเป็นไปยังไดรฟ์อื่น
- ย่อขนาดไฟล์ฐานข้อมูลอื่นหากเป็นไปได้
ย่อขนาดไฟล์ฐานข้อมูล (ใช้ด้วยความระมัดระวัง):
DBCC SHRINKFILE (logicalfilename, target_size);
4.3 การตั้งค่าฐานข้อมูลออนไลน์หลังจากแก้ไขพื้นที่
เมื่อมีพื้นที่ว่าง ให้พยายามนำฐานข้อมูลออนไลน์:
ALTER DATABASE [DatabaseName] SET ONLINE;
5. แก้ไข #3: ตั้งค่า SQL Server บริการเริ่มต้นล่าช้า
การตั้งค่า SQL Server การตั้งค่าการเริ่มต้นล่าช้าจะช่วยแก้ไขปัญหาการกู้คืนฐานข้อมูล SQL ที่ค้างอยู่ ซึ่งเกิดจากระบบจัดเก็บข้อมูลหรือไดรฟ์เครือข่ายไม่พร้อมใช้งานระหว่างการบูตระบบ
5.1 การทำความเข้าใจปัญหาเรื่องเวลา
ปัญหาเรื่องเวลาเกิดขึ้นเมื่อ:
- SAN หรือที่เก็บข้อมูลเครือข่ายต้องใช้เวลาในการเริ่มต้น
- ตัวอักษรไดรฟ์ไม่ได้รับการกำหนดในระหว่างการบูตในช่วงต้น
- ไดรฟ์เครือข่ายต้องมีการตรวจสอบสิทธิ์
- ตัวควบคุมการจัดเก็บข้อมูลต้องใช้เวลาในการเริ่มต้น
5.2 การกำหนดค่าการเริ่มต้นล่าช้า
- ข่าวประชาสัมพันธ์ คีย์ Windows + R
- ประเภท services.msc และกด Enter
- หา SQL Server เช่นเช่น SQL Server (MSSQLSERVER)
- คลิกขวาและเลือก อสังหาริมทรัพย์
- เปลี่ยนแปลง ชนิดการเริ่มต้น ไปยัง อัตโนมัติ (Delayed Start)
- คลิก OK
- รีสตาร์ทระบบเพื่อทดสอบ
5.3 ทางเลือกในการแก้ปัญหาเรื่องเวลา
หากต้องการควบคุมเพิ่มเติม ให้สร้างงานตามกำหนดเวลา:
- จุดเปิด Task Scheduler
- คลิก การดำเนินการ -> สร้างงานพื้นฐาน
- ใส่ข้อมูล ชื่อ และ รายละเอียด ของงาน เช่น “เลื่อนเวลาเริ่มต้นของ” SQL Server บริการ"
- ชุด ทริกเกอร์ ไปยัง เมื่อคอมพิวเตอร์เริ่มทำงาน
- ชุด การกระทำ ไปยัง จุดเริ่มต้นของโปรแกรม
- ชุด โปรแกรม / สคริปต์ สู่เส้นทางเต็มของ Sqlservr.exeเช่นนี้: C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Binn\sqlservr.exe คุณสามารถใช้ฟังก์ชันค้นหาใน Windows เพื่อค้นหาไฟล์ได้
- ในหน้าเสร็จสิ้นให้เลือก เปิดกล่องโต้ตอบคุณสมบัติสำหรับงานนี้เมื่อฉันคลิกเสร็จสิ้น.
- คลิก เสร็จสิ้น.
- ในกล่องโต้ตอบคุณสมบัติงาน คลิก ทริกเกอร์ แถบ
- เลือกทริกเกอร์และคลิก Edit
- ในการตั้งค่าขั้นสูง ให้ตรวจสอบ การเลื่อนงานสำหรับ: และตั้งเวลาเป็น 3 นาที
- คลิก ตกลง
6. แก้ไข #4: แก้ไขสิทธิ์การเข้าถึงไฟล์และสิทธิ์การเข้าถึง
ปัญหาเรื่องการอนุญาตป้องกันไม่ให้ SQL Server จากการเข้าถึงไฟล์ฐานข้อมูล นำไปสู่สถานะรอการกู้คืนฐานข้อมูล SQL สิทธิ์การเข้าถึงไฟล์ที่ถูกต้องเป็นสิ่งสำคัญสำหรับการดำเนินงานฐานข้อมูล
6.1 ปัญหาการอนุญาตทั่วไป
- SQL Server บัญชีบริการขาดสิทธิ์การเข้าถึงไฟล์
- ซอฟต์แวร์ป้องกันไวรัสบล็อกการเข้าถึงไฟล์
- การเปลี่ยนแปลงนโยบายความปลอดภัย
- ปัญหาการอนุญาตการแชร์เครือข่าย
6.2 การแก้ไขสิทธิ์ของโฟลเดอร์
- นำทางไปยังโฟลเดอร์ไฟล์ฐานข้อมูล
- คลิกขวาที่โฟลเดอร์และเลือก อสังหาริมทรัพย์
- คลิก ความปลอดภัย แถบ
- คลิก Edit
- เพิ่ม SQL Server บัญชีบริการหากหายไป
- ให้ ควบคุมทั้งหมด สิทธิ์
- คลิก OK เพื่อใช้การเปลี่ยนแปลง
การใช้บรรทัดคำสั่ง (icacls):
icacls "C:\Data" /grant "NT SERVICE\MSSQLSERVER":F /T
6.3 การพิจารณาบัญชีบริการ
ตรวจสอบ SQL Server บัญชีบริการ:
- จุดเปิด SQL Server เครื่องมือจัดการการกำหนดค่า
- คลิก SQL Server บริการของเรา
- หมายเหตุ เข้าสู่ระบบเป็น บัญชีสำหรับ SQL Server
- ตรวจสอบให้แน่ใจว่าบัญชีนี้มีการอนุญาตที่ถูกต้อง
7. แก้ไข #5: การแก้ไขเส้นทางไฟล์ด้วยตนเอง
ปัญหาเส้นทางไฟล์เกิดขึ้นเมื่อไฟล์ฐานข้อมูลถูกย้ายหรือมีการเปลี่ยนแปลงอักษรไดรฟ์ วิธีการนี้จะอัปเดต SQL Serverการอ้างอิงไฟล์ภายในโดยไม่ต้องย้ายไฟล์จริง
7.1 เมื่อเกิดปัญหาเส้นทาง
- การเปลี่ยนแปลงฮาร์ดแวร์เซิร์ฟเวอร์
- การกำหนดตัวอักษรไดรฟ์ใหม่
- การปรับเปลี่ยนเส้นทางเครือข่าย
- การย้ายไฟล์ฐานข้อมูล
7.2 การแก้ไขเส้นทางไฟล์
- ระบุเส้นทางไฟล์ปัจจุบันในบันทึกข้อผิดพลาด
- ค้นหาไฟล์ฐานข้อมูลจริง
- ใช้ ALTER DATABASE เพื่ออัปเดตเส้นทาง
อัปเดตเส้นทางไฟล์ข้อมูล:
ALTER DATABASE [DatabaseName]
MODIFY FILE (NAME = 'LogicalDataFileName', FILENAME = 'C:\NewPath\DatabaseName.mdf');
อัปเดตเส้นทางไฟล์บันทึก:
ALTER DATABASE [DatabaseName]
MODIFY FILE (NAME = 'LogicalLogFileName', FILENAME = 'C:\NewPath\DatabaseName_Log.ldf');
7.3 ขั้นตอนการตรวจสอบ
- เริ่มต้นใหม่ SQL Server บริการ
- ตรวจสอบสถานะฐานข้อมูล
- ตรวจสอบบันทึกข้อผิดพลาดสำหรับข้อความที่เกี่ยวข้องกับเส้นทาง
- ทดสอบการเชื่อมต่อฐานข้อมูล
8. แก้ไข #6: นำฐานข้อมูลออฟไลน์แล้วออนไลน์
การเปลี่ยนแปลงสถานะอย่างง่ายนี้สามารถแก้ไขปัญหาการกู้คืนฐานข้อมูล SQL ที่ค้างอยู่เล็กน้อยได้ โดยการบังคับให้เกิดการเปลี่ยนสถานะอย่างราบรื่นและล้างการล็อกชั่วคราว
8.1 เมื่อวิธีนี้ได้ผล
- ความไม่สอดคล้องกันเล็กน้อยของรัฐ
- การล็อกทรัพยากรชั่วคราว
- กระบวนการกู้คืนแบบง่ายรีเซ็ต
- เงื่อนไขข้อผิดพลาดที่ไม่สำคัญ
8.2 ขั้นตอนออฟไลน์/ออนไลน์
- ตรวจสอบให้แน่ใจว่าไม่มีการเชื่อมต่อที่ใช้งานอยู่กับฐานข้อมูล
- ดำเนินการคำสั่งออฟไลน์
- รอสักครู่
- ดำเนินการคำสั่งออนไลน์
วิธีการที่ปลอดภัย (รอให้การเชื่อมต่อปิด):
ALTER DATABASE [DatabaseName] SET OFFLINE;
ALTER DATABASE [DatabaseName] SET ONLINE;
วิธีการทันที (ยุติการเชื่อมต่อ):
ALTER DATABASE [DatabaseName] SET OFFLINE WITH ROLLBACK IMMEDIATE;
ALTER DATABASE [DatabaseName] SET ONLINE;
8.3 ความเสี่ยงและข้อควรพิจารณา
คำเตือน: การใช้ ROLLBACK IMMEDIATE อาจทำให้ข้อมูลสูญหายจากธุรกรรมที่ยังไม่ได้ยืนยัน ควรใช้เฉพาะเมื่อจำเป็นและตรวจสอบให้แน่ใจว่าผู้ใช้ออกจากระบบแล้ว
9. แก้ไข #7: ปิดใช้งานคุณสมบัติปิดอัตโนมัติ
คุณลักษณะปิดอัตโนมัติอาจทำให้เกิดปัญหาในการกู้คืนฐานข้อมูล SQL เมื่อฐานข้อมูลเปิดและปิดบ่อยครั้ง ทำให้เกิดความขัดแย้งด้านเวลาในการดำเนินการกู้คืน
9.1 ทำความเข้าใจผลกระทบของการปิดอัตโนมัติ
- ฐานข้อมูลจะปิดลงหลังจากผู้ใช้รายสุดท้ายตัดการเชื่อมต่อ
- ต้องกู้คืนทุกครั้งที่เปิดฐานข้อมูล
- สร้างวงจรการฟื้นฟูบ่อยครั้ง
- อาจรบกวนการทำงานอื่นได้
9.2 การปิดใช้งานการปิดอัตโนมัติ
การใช้ T-SQL:
ALTER DATABASE [DatabaseName] SET AUTO_CLOSE OFF;
การใช้ SQL Server สตูดิโอการจัดการ:
- คลิกขวาที่ฐานข้อมูล
- เลือก อสังหาริมทรัพย์
- ไปที่ ตัวเลือก หน้า
- ชุด ปิดอัตโนมัติ ไปยัง เท็จ
- คลิก OK
9.3 การตั้งค่าอัตโนมัติที่เกี่ยวข้อง
พิจารณาปิดการใช้งาน AUTO_SHRINK เพื่อประสิทธิภาพที่ดีขึ้นด้วย:
ALTER DATABASE [DatabaseName] SET AUTO_SHRINK OFF;
10. วิธีแก้ไข #8: ลบไฟล์บันทึกที่เสียหายและรีสตาร์ทเครื่อง
วิธีนี้ใช้ได้เมื่อไฟล์บันทึกธุรกรรมเสียหายอย่างรุนแรงจนไม่สามารถซ่อมแซมได้ ควรใช้เฉพาะในสภาพแวดล้อมการพัฒนา หรือเมื่อข้อมูลสูญหายในระดับที่ยอมรับได้
10.1 เมื่อการลบบันทึกมีความเหมาะสม
⚠️ คำเตือนที่สำคัญ: วิธีการนี้ทำให้สูญเสียข้อมูล!
ใช้เฉพาะเมื่อ:
- การทำงานกับฐานข้อมูลการพัฒนา/ทดสอบ
- ไฟล์บันทึกเสียหายอย่างสมบูรณ์
- ไม่มีตัวเลือกการกู้คืนอื่น ๆ
- มีการสำรองข้อมูลล่าสุด
10.2 ขั้นตอนการลบไฟล์บันทึก
- หยุด SQL Server บริการครบวงจร
- นำทางไปยังตำแหน่งไฟล์ฐานข้อมูล
- ลบไฟล์ .LDF (เก็บไฟล์ .MDF ไว้)
- เริ่มต้น SQL Server บริการ
- SQL Server จะสร้างไฟล์บันทึกใหม่โดยอัตโนมัติ
10.3 คำเตือนที่สำคัญ
ผลกระทบจากการสูญเสียข้อมูล:
- ธุรกรรมที่ยังไม่ได้รับการยืนยันทั้งหมดจะสูญหายไปอย่างถาวร
- โซ่บันทึกขาด – การสำรองข้อมูลแบบแยกส่วนไม่ถูกต้อง
- การกู้คืนเฉพาะจุดเวลาเป็นไปไม่ได้
- ใช้เฉพาะในสภาพแวดล้อมที่ไม่ใช่การผลิตเท่านั้น
11. แก้ไข #9: แยกและแนบฐานข้อมูลใหม่
การแยกและการรวมกำลังใหม่ SQL Server เพื่อสร้างไฟล์บันทึกที่หายไปหรือเสียหายขึ้นมาใหม่ วิธีนี้สามารถแก้ไขปัญหาการกู้คืนฐานข้อมูล SQL ที่ค้างอยู่ได้เมื่อไฟล์บันทึกมีปัญหา
11.1 เมื่อการถอด/ติดใหม่ทำงาน
- ไฟล์บันทึกที่หายไป
- ส่วนหัวของไฟล์บันทึกเสียหาย
- การเปลี่ยนแปลงเส้นทางไฟล์บันทึก
- สถานการณ์การทุจริตแบบง่ายๆ
11.2 ขั้นตอนการถอด/ติดกลับมาตรฐาน
- ตั้งค่าฐานข้อมูลเป็นโหมดฉุกเฉินก่อน
- เปลี่ยนเป็นโหมดผู้ใช้หลายคน
- แยกฐานข้อมูลออก
- แนบใหม่โดยใช้ไฟล์ MDF เท่านั้น
-- Set to emergency mode
ALTER DATABASE [DatabaseName] SET EMERGENCY;
ALTER DATABASE [DatabaseName] SET MULTI_USER;
-- Detach database
EXEC sp_detach_db '[DatabaseName]';
-- Re-attach with single file (MDF only)
EXEC sp_attach_single_file_db
@DBName = '[DatabaseName]',
@physname = N'C:\Data\DatabaseName.mdf';
11.3 วิธีการแนบทางเลือก
สำหรับสถานการณ์ไฟล์หลายไฟล์:
CREATE DATABASE [DatabaseName]
ON (FILENAME = 'C:\Data\DatabaseName.mdf'),
(FILENAME = 'C:\Data\DatabaseName_2.ndf')
FOR ATTACH;
12. แก้ไข #10: สร้างไฟล์บันทึกธุรกรรมใหม่
การสร้างบันทึกใหม่จะสร้างไฟล์บันทึกธุรกรรมใหม่เมื่อไฟล์ต้นฉบับสูญหายหรือเสียหายจนแก้ไขไม่ได้ วิธีการนี้แก้ไขปัญหาที่ค้างอยู่ในการกู้คืนฐานข้อมูล SQL แต่อาจทำให้ข้อมูลสูญหายได้
12.1 เมื่อจำเป็นต้องสร้างบันทึกใหม่
- ไฟล์ LDF หายไปหลังจากฮาร์ดแวร์ล้มเหลว
- บันทึกธุรกรรมเสียหายอย่างรุนแรง
- การเปลี่ยนแปลงเส้นทางไฟล์บันทึกที่ไม่สามารถแก้ไขได้
- สถานการณ์การฟื้นฟูฉุกเฉิน
12.2 กระบวนการสร้างบันทึกใหม่
⚠️ คำเตือน: สิ่งนี้ทำให้สูญเสียข้อมูล!
- ตั้งค่าฐานข้อมูลเป็นโหมดฉุกเฉิน
- ใช้คำสั่ง REBUILD LOG
- ระบุตำแหน่งไฟล์บันทึกใหม่
- นำฐานข้อมูลออนไลน์
ALTER DATABASE [DatabaseName] SET EMERGENCY;
GO
ALTER DATABASE [DatabaseName] REBUILD LOG ON
(NAME = 'DatabaseName_Log', FILENAME = 'C:\Logs\DatabaseName_Log.ldf');
GO
ALTER DATABASE [DatabaseName] SET ONLINE;
GO
12.3 การทำความเข้าใจผลกระทบของการสูญเสียข้อมูล
การสร้างบันทึกใหม่ทำให้เกิด:
- การสูญเสียธุรกรรมที่ยังไม่ได้ยืนยันทั้งหมด
- หมายเลขลำดับบันทึกที่เสียหาย
- ไม่สามารถนำการสำรองข้อมูลบันทึกที่ตามมาไปใช้
- การกู้คืนเฉพาะจุดเวลาเป็นไปไม่ได้
13. แก้ไข #11: การซ่อมแซมโหมดฉุกเฉินด้วย DBCC CHECKDB
การซ่อมแซมในโหมดฉุกเฉินเป็นวิธีสุดท้ายสำหรับการกู้คืนฐานข้อมูล SQL ที่มีปัญหาค้างอยู่อันเนื่องมาจากความเสียหาย วิธีนี้สามารถซ่อมแซมฐานข้อมูลได้ แต่อาจทำให้ข้อมูลสูญหายจำนวนมาก
13.1 ทำความเข้าใจโหมดฉุกเฉิน
⚠️ คำเตือนสุดขีด: มีความเสี่ยงสูงที่จะสูญเสียข้อมูล!
ใช้โหมดฉุกเฉินเฉพาะเมื่อ:
- วิธีการอื่นทั้งหมดล้มเหลว
- ไม่มีการสำรองข้อมูลล่าสุด
- การกู้คืนข้อมูลบางอย่างดีกว่าการสูญเสียข้อมูลทั้งหมด
- ฐานข้อมูลเสียหายร้ายแรง
13.2 ขั้นตอนการซ่อมแซมฉุกเฉิน
- ทำการสำรองไฟล์ฐานข้อมูลที่เสียหายก่อน
- ตั้งค่าฐานข้อมูลเป็นโหมดฉุกเฉิน
- สลับไปยังโหมดผู้ใช้รายเดียว
- เรียกใช้ CHECKDB พร้อมตัวเลือกการซ่อมแซม
- กลับสู่โหมดผู้ใช้หลายคน
-- Step 1: Set to emergency mode
ALTER DATABASE [DatabaseName] SET EMERGENCY;
GO
-- Step 2: Single user mode
ALTER DATABASE [DatabaseName] SET SINGLE_USER;
GO
-- Step 3: Repair with no data loss
DBCC CHECKDB ([DatabaseName], REPAIR_REBUILD) WITH ALL_ERRORMSGS;
GO
-- Step 4: Return to multi-user
ALTER DATABASE [DatabaseName] SET MULTI_USER;
GO
13.3 การประเมินหลังการซ่อมแซม
- ตรวจสอบผลลัพธ์ CHECKDB สำหรับการดำเนินการซ่อมแซม
- ตรวจสอบตารางหรือข้อมูลที่หายไป
- ตรวจสอบฟังก์ชันการทำงานของแอปพลิเคชันที่สำคัญ
- หากข้อมูลสูญหายเป็นจำนวนมาก ควรพิจารณาการกู้คืนจากข้อมูลสำรอง
14. แก้ไข #12: ตรวจสอบและแก้ไขการกำหนดค่า FILESTREAM
ปัญหาการกำหนดค่า FILESTREAM อาจทำให้เกิดปัญหาระหว่างการกู้คืนฐานข้อมูล SQL วิธีนี้ช่วยแก้ไขปัญหาความล้มเหลวในการกู้คืนข้อมูลเฉพาะของ FILESTREAM
14.1 ปัญหาการกู้คืนที่เกี่ยวข้องกับ FILESTREAM
- ความล้มเหลวในการเชื่อมต่อไดรเวอร์ FILESTREAM
- การกำหนดค่าไม่ตรงกันระหว่าง SQL Server และ OS
- ปัญหาเรื่องจังหวะเวลาในระหว่างการเริ่มต้นบริการ
- ปัญหาการอนุญาตกับคอนเทนเนอร์ FILESTREAM
14.2 การแก้ไขปัญหา FILESTREAM
- ตรวจสอบระดับการกำหนดค่า FILESTREAM
- ตรวจสอบว่าฟีเจอร์ Windows เปิดใช้งานอยู่
- เริ่มบริการที่จำเป็นใหม่อีกครั้ง
- ตรวจสอบสิทธิ์คอนเทนเนอร์ FILESTREAM
ตรวจสอบการกำหนดค่า FILESTREAM:
SELECT SERVERPROPERTY('FilestreamEffectiveLevel') AS CurrentLevel;
เปิดใช้งาน FILESTREAM ที่ระดับอินสแตนซ์:
EXEC sp_configure 'filestream access level', 2;
RECONFIGURE;
14.3 แนวทางปฏิบัติที่ดีที่สุดของ FILESTREAM
- ตรวจสอบให้แน่ใจว่าการตั้งค่ามีความสม่ำเสมอทุกครั้งที่รีสตาร์ท
- ตรวจสอบเส้นทางคอนเทนเนอร์ FILESTREAM ว่าสามารถเข้าถึงได้
- ตรวจสอบคุณสมบัติ Windows FILESTREAM ว่าเปิดใช้งานอย่างถูกต้อง
- ตรวจสอบข้อความแสดงข้อผิดพลาดที่เกี่ยวข้องกับ FILESTREAM
15. แก้ไข #13: อัปเดต SQL Server เวอร์ชัน/เซอร์วิสแพ็ค
มากกว่า SQL Server เวอร์ชันต่างๆ โดยเฉพาะรุ่น RTM มีบั๊กที่ทราบแล้วซึ่งก่อให้เกิดปัญหาระหว่างการกู้คืนฐานข้อมูล SQL การอัปเดตเป็น Service Pack เวอร์ชันล่าสุดจะช่วยแก้ไขปัญหาเหล่านี้ได้
15.1 ปัญหาที่ทราบในเวอร์ชันเก่า
- SQL Server ข้อผิดพลาดในการกู้คืน RTM ปี 2005
- การแก้ไขเฉพาะ Service Pack สำหรับกระบวนการกู้คืน
- การอัปเดตสะสมเพื่อแก้ไขกรณีขอบ
- ปัญหาความเข้ากันได้กับ Windows เวอร์ชันใหม่กว่า
15.2 กระบวนการอัปเดต
- ตรวจสอบปัจจุบัน SQL Server รุ่น
- ระบุชุดบริการล่าสุดที่มีอยู่
- ดาวน์โหลดจาก ศูนย์ดาวน์โหลดของไมโครซอฟท์
- กำหนดหน้าต่างการบำรุงรักษา
- ติดตั้งเซอร์วิสแพ็ค
- เริ่มบริการใหม่
- ตรวจสอบการทำงานของฐานข้อมูล
ตรวจสอบเวอร์ชันปัจจุบัน:
SELECT @@VERSION;
15.3 การตรวจสอบหลังการอัปเดต
- ยืนยันหมายเลขเวอร์ชันที่เปลี่ยนแปลง
- ตรวจสอบฐานข้อมูลทั้งหมดให้ออนไลน์อย่างถูกต้อง
- รันการทดสอบฟังก์ชันพื้นฐาน
- ตรวจสอบบันทึกข้อผิดพลาดสำหรับปัญหาใหม่ๆ
16. แก้ไข #14: กู้คืนฐานข้อมูลจากการสำรองข้อมูล
เมื่อไม่สามารถแก้ไขปัญหาการกู้คืนฐานข้อมูล SQL ที่ค้างอยู่ได้ด้วยวิธีการซ่อมแซม การกู้คืนจากข้อมูลสำรองที่ใช้งานได้ดีจะให้วิธีแก้ปัญหาที่น่าเชื่อถือที่สุด โดยมีขอบเขตการสูญเสียข้อมูลที่คาดการณ์ได้
16.1 เมื่อการกู้คืนข้อมูลสำรองเป็นทางออก
- ความพยายามซ่อมแซมหลายครั้งล้มเหลว
- ข้อมูลการผลิตที่สำคัญต้องมีความแน่นอน
- มีหน้าต่างการสูญเสียข้อมูลที่ยอมรับได้
- คอร์รัปชั่นมีมากเกินกว่าจะแก้ไขได้
16.2 กระบวนการคืนค่าฐานข้อมูลแบบเต็ม
- ระบุไฟล์สำรองข้อมูลล่าสุดที่ใช้งานได้
- ตรวจสอบให้แน่ใจว่ามีพื้นที่ว่างในดิสก์เพียงพอสำหรับการคืนค่า
- ออฟไลน์ฐานข้อมูลหรือลบทิ้งหากจำเป็น
- คืนค่าจากไฟล์สำรอง
- ใช้การสำรองข้อมูลบันทึกหากมี
การคืนค่าพื้นฐานจากการสำรองข้อมูลเต็มรูปแบบ:
RESTORE DATABASE [DatabaseName]
FROM DISK = 'C:\Backups\DatabaseName.bak'
WITH REPLACE;
คืนค่าด้วยการสำรองข้อมูลบันทึกสำหรับการกู้คืน ณ จุดเวลา:
RESTORE DATABASE [DatabaseName]
FROM DISK = 'C:\Backups\DatabaseName.bak'
WITH NORECOVERY, REPLACE;
RESTORE LOG [DatabaseName]
FROM DISK = 'C:\Backups\DatabaseName_Log.trn'
WITH RECOVERY;
16.3 การตรวจสอบและการทดสอบ
- ตรวจสอบฐานข้อมูลออนไลน์สำเร็จ
- ตรวจสอบความสมบูรณ์ของข้อมูลด้วย CHECKDB
- ทดสอบฟังก์ชันการใช้งานที่สำคัญ
- ยืนยันว่าการสำรองข้อมูล/คืนค่าเสร็จสมบูรณ์โดยไม่มีข้อผิดพลาด
16.4 ข้อมูลอ้างอิง
คุณสามารถเรียนรู้ข้อมูลเพิ่มเติมได้จาก คำแนะนำที่ครอบคลุมเกี่ยวกับวิธีการสำรองข้อมูลและคืนค่า SQL Server ฐานข้อมูล.
17. แก้ไข #15: เครื่องมือการกู้คืน SQL ระดับมืออาชีพ
เมื่อวิธีการด้วยตนเองไม่สามารถแก้ไขปัญหาการกู้คืนฐานข้อมูล SQL ที่ค้างอยู่ได้ ซอฟต์แวร์กู้คืนเฉพาะทางสามารถดึงข้อมูลจากฐานข้อมูลที่เสียหายร้ายแรงซึ่งไม่สามารถซ่อมแซมได้ด้วยวิธีมาตรฐาน
17.1 เมื่อใดควรพิจารณาใช้เครื่องมือของบุคคลที่สาม
- การทุจริตร้ายแรงเกินกว่าความสามารถในการซ่อมแซมด้วยมือ
- ข้อมูลสำคัญที่ไม่มีการสำรองข้อมูล
- ความพยายามซ่อมแซมด้วยตนเองล้มเหลวหลายครั้ง
- ข้อกำหนดการกู้คืนที่สำคัญตามเวลา
17.2 DataNumen SQL Recovery
DataNumen SQL Recovery ที่มีประสิทธิภาพ SQL Server เครื่องมือการกู้คืนฐานข้อมูล
ขั้นตอนการใช้งานมีดังต่อไปนี้:
- หยุด SQL Server บริการ.
- สร้างสำเนาของไฟล์ฐานข้อมูลในสถานะรอการกู้คืน ซึ่งรวมถึงไฟล์ MDF หลักและไฟล์ NDF รอง
- เริ่มต้น SQL Server บริการ.
- เริ่มต้น DataNumen SQL Recovery.
- เลือกสำเนาแทนไฟล์ต้นฉบับเป็นแหล่งที่มาของฐานข้อมูลที่จะกู้คืน
- คลิก “เริ่มการกู้คืน” และทำตามคำแนะนำเพื่อกู้คืนฐานข้อมูล
- หลังจากกระบวนการกู้คืนฐานข้อมูลการกู้คืนใหม่จะปรากฏขึ้นใน SQL Server ซึ่งมีข้อมูลที่กู้คืนมาทั้งหมด

18. สถานการณ์การแก้ไขปัญหาขั้นสูง
สภาพแวดล้อมที่ซับซ้อนต้องใช้วิธีการเฉพาะทางในการแก้ไขปัญหาที่รอการกู้คืนฐานข้อมูล SQL
18.1 ปัญหาไฟล์ฐานข้อมูลหลายไฟล์
ฐานข้อมูลที่มีไฟล์ข้อมูลหลายไฟล์ (NDF) ต้องมีการจัดการอย่างระมัดระวัง:
- ระบุกลุ่มไฟล์ที่ได้รับผลกระทบ
- ตรวจสอบไฟล์ NDF ทั้งหมดเพื่อการเข้าถึง
- พิจารณาตัวเลือกการกู้คืนเฉพาะกลุ่มไฟล์
- จัดการกลุ่มไฟล์แบบอ่านอย่างเดียวอย่างเหมาะสม
18.2 กลุ่มความพร้อมใช้งานแบบเปิดเสมอ
การกู้คืนฐานข้อมูล SQL กำลังรอการดำเนินการ เสมอใน สภาพแวดล้อม:
- ตรวจสอบสถานะการจำลองหลักก่อน
- ตรวจสอบสถานะการซิงโครไนซ์
- พิจารณาการลบและเพิ่มสำเนาที่มีปัญหาอีกครั้ง
- ตรวจสอบการกำหนดค่ากลุ่มความพร้อมใช้งาน
18.3 สถานการณ์คลัสเตอร์และความพร้อมใช้งานสูง
กำลังดำเนินการกู้คืนฐานข้อมูล SQL คลัสเตอร์เฟลโอเวอร์ และ พร้อมใช้งานสูง สถานการณ์:
- ตรวจสอบการเข้าถึงที่เก็บข้อมูลที่ใช้ร่วมกัน
- ตรวจสอบการสื่อสารของโหนดคลัสเตอร์
- ตรวจสอบบันทึกคลัสเตอร์ล้มเหลว
- ตรวจสอบให้แน่ใจว่าการแก้ไข DNS ถูกต้อง
18.4 ปัญหา WMI และระดับระบบ
ปัญหาในระดับระบบอาจทำให้เกิดปัญหาฐานข้อมูลได้:
- ความเสียหายของที่เก็บข้อมูล WMI
- การอัปเดต Windows ล้มเหลว
- การทุจริตของรีจิสทรี
- ปัญหาการพึ่งพาบริการ
19. กลยุทธ์การป้องกัน
การป้องกันปัญหาที่ค้างอยู่ในการกู้คืนฐานข้อมูล SQL มีประสิทธิภาพมากกว่าการแก้ไขปัญหาหลังจากที่เกิดขึ้นแล้ว
19.1 แนวทางปฏิบัติที่ดีที่สุดในการสำรองข้อมูล
- ดำเนินการกำหนดการสำรองข้อมูลเต็มรูปแบบอัตโนมัติ
- กำหนดค่าการสำรองข้อมูลส่วนต่างปกติ
- ตั้งค่าการสำรองข้อมูลบันทึกธุรกรรมบ่อยครั้ง
- ทดสอบขั้นตอนการกู้คืนข้อมูลสำรองเป็นประจำ
- จัดเก็บข้อมูลสำรองบนระบบจัดเก็บข้อมูลแยกกัน
- ตรวจสอบความสมบูรณ์ของการสำรองข้อมูลด้วย RESTORE VERIFYONLY
19.2 การตรวจสอบและบำรุงรักษา
- ตั้งค่าการแจ้งเตือนการตรวจสอบพื้นที่ดิสก์
- กำหนดตารางการดำเนินการ DBCC CHECKDB เป็นประจำ
- การตรวจสอบ SQL Server บันทึกข้อผิดพลาดทุกวัน
- Implement การตรวจสอบพื้นฐานประสิทธิภาพ
- กำหนดค่า SQL Server การแจ้งเตือนตัวแทนสำหรับข้อผิดพลาดที่สำคัญ
19.3 การพิจารณาโครงสร้างพื้นฐาน
- ติดตั้งระบบ UPS เพื่อป้องกันไฟฟ้า
- ใช้ที่เก็บข้อมูลระดับองค์กรพร้อมความซ้ำซ้อน
- ปฏิบัติตามขั้นตอนการปิดระบบอย่างถูกต้อง
- รับประกันความเสถียรของเครือข่ายสำหรับการจัดเก็บข้อมูลร่วมกัน
- การตรวจสอบสุขภาพฮาร์ดแวร์เป็นประจำ
19.4 SQL Server แนวทางปฏิบัติที่ดีที่สุดในการกำหนดค่า
- เลือกโมเดลการกู้คืนที่เหมาะสม
- กำหนดค่าการตั้งค่าการเติบโตอัตโนมัติที่เหมาะสม
- แยกข้อมูลและไฟล์บันทึกบนไดรฟ์ที่แตกต่างกัน
- ใช้บัญชีบริการเฉพาะที่มีสิทธิ์ขั้นต่ำ
- เก็บ SQL Server อัปเดตด้วยเซอร์วิสแพ็คล่าสุด
20. การแก้ไขปัญหาต้นไม้การตัดสินใจและวิธีการ
ปฏิบัติตามแนวทางระบบนี้เมื่อพบปัญหาในการกู้คืนฐานข้อมูล SQL
20.1 แนวทางการวินิจฉัยเชิงระบบ
- ตรวจสอบบันทึกข้อผิดพลาดก่อน – เริ่มต้นด้วยเสมอ SQL Server และบันทึกของ Windows
- ตรวจสอบการเข้าถึงไฟล์ – ตรวจสอบให้แน่ใจว่าไฟล์ฐานข้อมูลทั้งหมดมีอยู่และสามารถอ่านได้
- ตรวจสอบพื้นที่ดิสก์ – ยืนยันพื้นที่เพียงพอสำหรับการดำเนินการกู้คืน
- ลองแก้ไขแบบง่ายๆ ก่อน – การรีสตาร์ทบริการ, ออฟไลน์/ออนไลน์
- ความก้าวหน้าสู่การซ่อมแซมที่ซับซ้อน – หลังจากวิธีง่ายๆ ล้มเหลวเท่านั้น
- พิจารณาการคืนค่าจากการสำรองข้อมูล – เมื่อความเสี่ยงในการซ่อมแซมสูงเกินไป
20.2 การเลือกวิธีการแก้ไขที่ถูกต้อง
ความเสี่ยงต่ำ (ลองก่อน):
- เริ่มต้นใหม่ SQL Server บริการ
- ตรวจสอบและแก้ไขพื้นที่ดิสก์
- แก้ไขสิทธิ์การอนุญาตไฟล์
- ฐานข้อมูลออฟไลน์/ออนไลน์
ความเสี่ยงปานกลาง:
- การแก้ไขเส้นทางไฟล์
- ปิดใช้งานการปิดอัตโนมัติ
- การแก้ไขการกำหนดค่า FILESTREAM
- บริการเริ่มช้า
ความเสี่ยงสูง (อาจสูญเสียข้อมูลได้):
- ลบไฟล์บันทึกและรีสตาร์ทเครื่อง
- การแยก/แนบฐานข้อมูลใหม่
- สร้างบันทึกธุรกรรมใหม่
- ซ่อมโหมดฉุกเฉินด้วย DBCC CHECKDB
20.3 เมื่อใดจึงควรยกระดับ
ขอความช่วยเหลือจากผู้เชี่ยวชาญเมื่อ:
- วิธีการที่มีความเสี่ยงสูงหลายวิธีล้มเหลว
- ฐานข้อมูลประกอบด้วยข้อมูลสำคัญที่ไม่สามารถแทนที่ได้
- การทุจริตส่งผลกระทบต่อฐานข้อมูลหลายแห่ง
- สงสัยว่าเป็นปัญหาในระดับระบบ
- ข้อจำกัดด้านเวลาต้องการผลลัพธ์ที่รับประกัน
21. คำถามที่พบบ่อย
ถาม: ความแตกต่างระหว่างสถานะฐานข้อมูล “กำลังกู้คืน” และ “กำลังรอการกู้คืน” คืออะไร
A: “กำลังกู้คืน” หมายถึงฐานข้อมูลกำลังดำเนินการกู้คืนอย่างต่อเนื่อง และจะออนไลน์โดยอัตโนมัติเมื่อเสร็จสิ้น “กำลังรอการกู้คืน” หมายถึง SQL Server ไม่สามารถเริ่มกระบวนการกู้คืนได้เนื่องจากมีอุปสรรค เช่น ไฟล์หาย พื้นที่ไม่เพียงพอ หรือไฟล์เสียหาย การกู้คืนอยู่ในสถานะรอการแก้ไข ซึ่งต้องได้รับการแก้ไขด้วยตนเอง
ถาม: ฉันควรลองแก้ไขแบบใดก่อนเมื่อพบปัญหาในการกู้คืนฐานข้อมูล SQL?
A: ควรเริ่มต้นด้วยวิธีการที่ปลอดภัยที่สุดก่อนเสมอ ตรวจสอบดู SQL Server ตรวจสอบบันทึกข้อผิดพลาด ตรวจสอบพื้นที่ว่างในดิสก์ แล้วลองรีสตาร์ทอีกครั้ง SQL Server บริการเหล่านี้ วิธีการที่มีความเสี่ยงต่ำสามารถแก้ไขปัญหาการกู้คืนข้อมูลที่ค้างอยู่ทั่วไปได้โดยไม่มีความเสี่ยงต่อการสูญเสียข้อมูล
ถาม: ฉันควรจะรอเป็นเวลานานเพียงใดก่อนที่จะลองวิธีการแก้ไขอื่น?
A: สำหรับการรีสตาร์ทบริการ ให้รอ 2-3 นาทีจนกว่าการเริ่มต้นจะเสร็จสมบูรณ์ สำหรับการเปลี่ยนแปลงสถานะอย่างง่าย เช่น ออฟไลน์/ออนไลน์ ให้รอ 30-60 วินาที สำหรับการซ่อมแซมที่ซับซ้อน เช่น DBCC CHECKDB ให้รอหลายชั่วโมงขึ้นอยู่กับขนาดของฐานข้อมูล อย่าขัดจังหวะกระบวนการกู้คืนเมื่อเริ่มต้นแล้ว
ถาม: ฉันจะสูญเสียข้อมูลเมื่อแก้ไขปัญหาการกู้คืนฐานข้อมูล SQL หรือไม่
A: การสูญเสียข้อมูลขึ้นอยู่กับวิธีการที่ใช้ วิธีการที่ปลอดภัย เช่น การรีสตาร์ทบริการ การแก้ไขปัญหาพื้นที่ดิสก์ไม่เพียงพอ และการแก้ไขสิทธิ์การเข้าถึง จะไม่ทำให้ข้อมูลสูญหาย วิธีการที่มีความเสี่ยงสูง เช่น การซ่อมแซมในโหมดฉุกเฉิน การสร้างไฟล์บันทึกใหม่ หรือการลบไฟล์บันทึก อาจทำให้ข้อมูลสูญหายอย่างมาก ควรลองใช้วิธีการที่ปลอดภัยก่อนเสมอ
ถาม: ฉันสามารถป้องกันไม่ให้ปัญหาการกู้คืนฐานข้อมูล SQL เกิดขึ้นได้หรือไม่
A: ใช่ ปัญหาส่วนใหญ่สามารถป้องกันได้ด้วยการบำรุงรักษาที่เหมาะสม ควรทำการสำรองข้อมูลเป็นประจำ ตรวจสอบพื้นที่ดิสก์ รักษาความจุในการจัดเก็บข้อมูลให้เพียงพอ ใช้ระบบสำรองไฟ (UPS) ตรวจสอบฐานข้อมูล (DBCC CHECKDB) เป็นประจำ และดูแลรักษาฐานข้อมูลให้ดี SQL Server อัปเดตด้วย Service Pack ล่าสุด
ถาม: ฉันควรพยายามซ่อมแซมฐานข้อมูลการผลิตในระหว่างเวลาทำการหรือไม่
A: ห้ามใช้วิธีการซ่อมแซมที่มีความเสี่ยงสูงกับฐานข้อมูลที่ใช้งานจริงในระหว่างเวลาทำการ ควรกำหนดช่วงเวลาสำหรับการบำรุงรักษาสำหรับการซ่อมแซมที่ซับซ้อน อย่างไรก็ตาม วิธีการที่ปลอดภัย เช่น การรีสตาร์ทบริการหรือการแก้ไขปัญหาพื้นที่ดิสก์ สามารถลองทำได้ทันทีหากวิธีการเหล่านั้นขัดขวางการทำงานที่สำคัญ
ถาม: ฉันควรคืนค่าจากข้อมูลสำรองเมื่อใดแทนที่จะพยายามซ่อมแซม?
ก: กู้คืนจากการสำรองข้อมูลเมื่อความพยายามซ่อมแซมหลายครั้งล้มเหลว เมื่อต้องจัดการกับข้อมูลการผลิตที่สำคัญซึ่งไม่สามารถเสี่ยงต่อการเสียหายเพิ่มเติมได้ เมื่อคุณมีการสำรองข้อมูลล่าสุดโดยมีหน้าต่างการสูญเสียข้อมูลที่ยอมรับได้ หรือเมื่อวิธีการซ่อมแซมใช้เวลานานกว่าการดำเนินการกู้คืน
ถาม: ฉันจะทราบได้อย่างไรว่าไฟล์ฐานข้อมูลของฉันเสียหายหรือไม่สามารถเข้าถึงได้?
เช็ค SQL Server บันทึกข้อผิดพลาดสำหรับข้อความแสดงข้อผิดพลาดเฉพาะ ปัญหาการเข้าถึงไฟล์จะแสดงข้อผิดพลาด "ไม่พบไฟล์" หรือข้อผิดพลาดเกี่ยวกับสิทธิ์ ความเสียหายโดยทั่วไปจะแสดงข้อผิดพลาด checksum ข้อผิดพลาดระดับเพจ หรือการละเมิดความสอดคล้อง ใช้ DBCC CHECKDB เพื่อทดสอบความเสียหายอย่างชัดเจนเมื่อฐานข้อมูลสามารถเข้าถึงได้
ถาม: วิธีที่ปลอดภัยที่สุดในการคัดลอกไฟล์ฐานข้อมูลก่อนที่จะพยายามซ่อมแซมคืออะไร
ก. หยุด SQL Server บริการทั้งหมดแล้ว ให้คัดลอกไฟล์ MDF และ LDF ไปยังตำแหน่งสำรองข้อมูล หรือใช้คำสั่งสำรองฐานข้อมูลหากยังเข้าถึงฐานข้อมูลได้ อย่าคัดลอกไฟล์ในขณะที่ SQL Server กำลังทำงานเนื่องจากอาจทำให้เกิดสำเนาที่ไม่สอดคล้องกัน
ถาม: ปัญหาการกู้คืนฐานข้อมูล SQL ที่กำลังรอการดำเนินการจะส่งผลต่อฐานข้อมูลหลายฐานข้อมูลพร้อมกันได้หรือไม่
ตอบ ใช่ ปัญหาในระดับระบบ เช่น พื้นที่ดิสก์ไม่เพียงพอ ปัญหาบัญชีบริการ ความล้มเหลวในการจัดเก็บข้อมูล หรือ SQL Server ข้อผิดพลาดในการกำหนดค่าอาจส่งผลกระทบต่อฐานข้อมูลหลายรายการ โปรดตรวจสอบเสมอว่าฐานข้อมูลอื่นกำลังประสบปัญหาที่คล้ายคลึงกันหรือไม่ เพื่อระบุปัญหาของระบบโดยรวม
ถาม: ฉันควรทดสอบขั้นตอนคืนค่าฐานข้อมูลบ่อยเพียงใด
ก: ทดสอบขั้นตอนการกู้คืนข้อมูลรายเดือนสำหรับฐานข้อมูลสำคัญ และรายไตรมาสสำหรับฐานข้อมูลสำคัญ รวมถึงการทดสอบสถานการณ์การกู้คืนข้อมูลต่างๆ เช่น การกู้คืน ณ จุดเวลา การกู้คืนลำดับบันทึก และขั้นตอนการกู้คืนข้อมูลฉุกเฉิน บันทึกและกำหนดเวลาการทดสอบแต่ละครั้งสำหรับการวางแผนฉุกเฉิน
ถาม: ฉันควรติดต่อฝ่ายสนับสนุนของ Microsoft หรือจ้างผู้เชี่ยวชาญเมื่อใด
ก. ขอความช่วยเหลือจากผู้เชี่ยวชาญเมื่อความพยายามซ่อมแซมหลายครั้งล้มเหลว ต้องจัดการกับข้อมูลที่สำคัญต่อภารกิจโดยไม่มีการสำรองข้อมูล เผชิญกับการเสียหายที่ซับซ้อนในฐานข้อมูลหลายฐาน พบกับข้อความแสดงข้อผิดพลาดที่ไม่ได้รับการบันทึกไว้ หรือเมื่อข้อจำกัดด้านเวลาต้องการผลการกู้คืนที่รับประกัน
ถาม: เครื่องมือการกู้คืน SQL ของบริษัทอื่นคุ้มค่ากับการลงทุนหรือไม่?
A: เครื่องมือการกู้คืนข้อมูลมีประโยชน์อย่างมากเมื่อวิธีการแบบแมนนวลล้มเหลวและไม่มีข้อมูลสำรองอยู่เลย เครื่องมือส่วนใหญ่มีเวอร์ชันทดลองใช้งานฟรีเพื่อให้ทดสอบความสามารถในการกู้คืนก่อนซื้อ พิจารณาต้นทุนเทียบกับบริการจากผู้เชี่ยวชาญ มูลค่าของข้อมูล และโอกาสในการกู้คืน เครื่องมือเหล่านี้ทำงานได้ดีที่สุดสำหรับการกู้คืนข้อมูลที่เสียหายในเชิงโครงสร้าง แต่ก็อาจไม่สามารถกู้คืนข้อมูลได้ทุกประเภท
ถาม: ฉันควรทำอย่างไรหากการกู้คืนฐานข้อมูล SQL ที่ค้างอยู่เกิดขึ้นซ้ำๆ กัน?
A: ปัญหาที่เกิดขึ้นซ้ำๆ บ่งชี้ถึงปัญหาพื้นฐานของระบบ ตรวจหาความล้มเหลวของฮาร์ดแวร์ ทรัพยากรไม่เพียงพอ ปัญหาของระบบจัดเก็บข้อมูล หรือปัญหาการกำหนดค่า ตรวจสอบบันทึกเหตุการณ์ของ Windows ดำเนินการตรวจสอบที่ครอบคลุม และพิจารณาอัปเกรดฮาร์ดแวร์หรือเปลี่ยนไปใช้ระบบจัดเก็บข้อมูลที่เชื่อถือได้มากขึ้น
22. บทสรุปและการอ้างอิงด่วน
ปัญหาการกู้คืนฐานข้อมูล SQL ที่ค้างอยู่สามารถแก้ไขได้โดยใช้วิธีการ 15 วิธีที่ได้รับการพิสูจน์แล้ว ตั้งแต่การรีสตาร์ทบริการอย่างง่ายไปจนถึงการซ่อมแซมฉุกเฉินที่ซับซ้อน
22.1 ตารางสรุปการแก้ไขด่วน
| วิธีการแก้ไข | ระดับความเสี่ยง | ความเสี่ยงในการสูญเสียข้อมูล | ใช้ดีที่สุดสำหรับ |
|---|---|---|---|
| เริ่มต้นใหม่ SQL Server | ต่ำ | ไม่มี | ปัญหาเรื่องเวลา การล็อกชั่วคราว |
| ตรวจสอบพื้นที่ดิสก์ | ต่ำ | ไม่มี | ความล้มเหลวที่เกี่ยวข้องกับอวกาศ |
| เริ่มล่าช้า | ต่ำ | ไม่มี | ปัญหาเรื่องเวลาในการจัดเก็บข้อมูล |
| แก้ไขสิทธิ์ | ต่ำ | ไม่มี | ข้อผิดพลาดการเข้าถึงถูกปฏิเสธ |
| เส้นทางไฟล์ที่ถูกต้อง | ต่ำ | ไม่มี | การเปลี่ยนแปลงเส้นทาง การโยกย้าย |
| ออฟไลน์ / ออนไลน์ | กลาง | ต่ำสุด | ความไม่สอดคล้องของรัฐ |
| ปิดใช้งานการปิดอัตโนมัติ | ต่ำ | ไม่มี | วงจรเปิด/ปิดบ่อยครั้ง |
| ลบไฟล์บันทึก | จุดสูง | มี (ใบกำกับภาษีเต็มรูปแบบ) | บันทึกที่เสียหาย สภาพแวดล้อมการพัฒนา |
| ถอด/ติดใหม่ | จุดสูง | มี (ใบกำกับภาษีเต็มรูปแบบ) | บันทึกที่หายไปหรือเสียหาย |
| สร้างบันทึกใหม่ | จุดสูง | มี (ใบกำกับภาษีเต็มรูปแบบ) | ไฟล์ LDF หายไป |
| การซ่อมแซมฉุกเฉินด้วย DBCC CHECKDB | สูงมาก | มี (ใบกำกับภาษีเต็มรูปแบบ) | คอร์รัปชั่นร้ายแรง ทางเลือกสุดท้าย |
| แก้ไข FILESTREAM | กลาง | ไม่มี | ปัญหาการกำหนดค่า FILESTREAM |
| บันทึก SQL Server | กลาง | ไม่มี | ข้อบกพร่องของเวอร์ชันที่ทราบแล้ว |
| กู้คืนจากข้อมูลสำรอง | ต่ำ | ควบคุม | เมื่อวิธีการซ่อมแซมล้มเหลว |
| เครื่องมือการกู้คืน | กลาง | แตกต่างกันไป | คอร์รัปชั่นร้ายแรง ไม่มีการสำรองข้อมูล |
22.2 รายการตรวจสอบการตอบสนองฉุกเฉิน
5 นาทีแรก:
- ตรวจสอบ SQL Server บันทึกข้อผิดพลาด
- ตรวจสอบการเข้าถึงไฟล์ฐานข้อมูล
- ตรวจสอบพื้นที่ว่างบนดิสก์
- ลองรีสตาร์ทบริการ
- ข้อความแสดงข้อผิดพลาดของเอกสาร
15 นาทีถัดไป:
- ลองเชื่อมต่อแบบออฟไลน์/ออนไลน์ หากการรีสตาร์ทบริการล้มเหลว
- ตรวจสอบและแก้ไขปัญหาการอนุญาตที่ชัดเจน
- ตรวจสอบเส้นทางไฟล์ให้ถูกต้อง
- ตรวจสอบบันทึกเหตุการณ์ Windows
- ประเมินความพร้อมใช้งานของการสำรองข้อมูล
22.3 แหล่งข้อมูลเพิ่มเติม
โปรดจำไว้ว่า: การป้องกันด้วยการสำรองข้อมูล การตรวจสอบ และการบำรุงรักษาที่เหมาะสมย่อมดีกว่าการกู้คืนข้อมูลเสมอ การทดสอบขั้นตอนเหล่านี้อย่างสม่ำเสมอในสภาพแวดล้อมที่ไม่ใช่การใช้งานจริงจะช่วยให้คุณเตรียมพร้อมรับมือกับปัญหาที่อาจเกิดขึ้นจากการกู้คืนฐานข้อมูล SQL
เกี่ยวกับผู้เขียน
หยวน เซิง เป็นผู้ดูแลฐานข้อมูลอาวุโส (DBA) ที่มีประสบการณ์มากกว่า 10 ปีใน SQL Server สภาพแวดล้อมและการจัดการฐานข้อมูลองค์กร เขาประสบความสำเร็จในการแก้ไขปัญหาการกู้คืนฐานข้อมูลหลายร้อยกรณีในองค์กรด้านบริการทางการเงิน การดูแลสุขภาพ และการผลิต
หยวนมีความเชี่ยวชาญด้าน SQL Server การกู้คืนฐานข้อมูล โซลูชันความพร้อมใช้งานสูง และการเพิ่มประสิทธิภาพการทำงาน ประสบการณ์ภาคปฏิบัติอันกว้างขวางของเขาครอบคลุมการจัดการฐานข้อมูลหลายเทราไบต์ การนำ Always On Availability Groups มาใช้ และการพัฒนากลยุทธ์การสำรองและกู้คืนข้อมูลอัตโนมัติสำหรับระบบธุรกิจที่สำคัญต่อภารกิจ
ด้วยความเชี่ยวชาญทางเทคนิคและแนวทางปฏิบัติ Yuan มุ่งเน้นที่การสร้างคู่มือที่ครอบคลุมซึ่งจะช่วยให้ผู้ดูแลระบบฐานข้อมูลและผู้เชี่ยวชาญด้านไอทีแก้ไขปัญหาที่ซับซ้อน SQL Server ท้าทายอย่างมีประสิทธิภาพ เขาคอยติดตามข่าวสารล่าสุดอยู่เสมอ SQL Server การเปิดตัวและเทคโนโลยีฐานข้อมูลที่พัฒนาอย่างต่อเนื่องของ Microsoft ทดสอบสถานการณ์การกู้คืนเป็นประจำเพื่อให้แน่ใจว่าคำแนะนำของเขาสะท้อนถึงแนวทางปฏิบัติที่ดีที่สุดในโลกแห่งความเป็นจริง
มีคำถามเกี่ยวกับ SQL Server การกู้คืนหรือต้องการคำแนะนำในการแก้ไขปัญหาฐานข้อมูลเพิ่มเติมหรือไม่? หยวนยินดีต้อนรับ ข้อเสนอแนะและข้อเสนอแนะ เพื่อปรับปรุงทรัพยากรทางเทคนิคเหล่านี้














