แบ่งปันเลย:
สารบัญ ซ่อน

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

1. ทำความเข้าใจสถานะรอการกู้คืนฐานข้อมูล SQL

ก่อนที่จะพยายามแก้ไขใดๆ การเข้าใจสาเหตุของปัญหาการกู้คืนฐานข้อมูล SQL ถือเป็นสิ่งสำคัญในการเลือกโซลูชันที่เหมาะสม

1.1 การกู้คืนที่รอดำเนินการหมายถึงอะไร?

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

SQL Server ฐานข้อมูลอยู่ในสถานะรอการกู้คืน

สถานะฐานข้อมูลที่สำคัญ ได้แก่:

  • ออนไลน์ – สถานะการทำงานปกติ
  • การกู้คืน – กระบวนการกู้คืนกำลังทำงานอยู่
  • การกู้คืนกำลังรอดำเนินการ – ไม่สามารถเริ่มกระบวนการกู้คืนได้
  • สงสัย – ฐานข้อมูลมีข้อผิดพลาดร้ายแรง
  • เมื่อเกิดเหตุฉุกเฉิน – การเข้าถึงแบบอ่านอย่างเดียวที่จำกัดสำหรับการซ่อมแซม
  • ออฟไลน์ – ออฟไลน์ด้วยตนเอง

1.2 สาเหตุทั่วไปของการกู้คืนฐานข้อมูล SQL ที่รอดำเนินการ

ปัญหาที่ค้างอยู่ในการกู้คืนฐานข้อมูล SQL มักเกิดจากสาเหตุทั่วไปเหล่านี้:

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

1.3 วิธีการตรวจสอบสถานะฐานข้อมูล

ตรวจสอบสถานะฐานข้อมูลของคุณโดยใช้วิธีการเหล่านี้:

การใช้ SQL Server สตูดิโอการจัดการ:

  1. เชื่อมต่อกับของคุณ SQL Server ตัวอย่าง
  2. แสดง ฐานข้อมูล โฟลเดอร์
  3. ค้นหาฐานข้อมูลที่แสดงสถานะ “(กำลังรอการกู้คืน)”

SQL Server ฐานข้อมูลอยู่ในสถานะรอการกู้คืน

การใช้คำสั่ง T-SQL:

SELECT name, state_desc FROM sys.databases WHERE state_desc = 'RECOVERY_PENDING';

2. ขั้นตอนการวินิจฉัยเบื้องต้น

การวินิจฉัยที่ถูกต้องเป็นสิ่งสำคัญก่อนที่จะพยายามกู้คืนฐานข้อมูล SQL ที่รอการแก้ไข

2.1 ตรวจสอบ SQL Server บันทึกข้อผิดพลาด

บันทึกข้อผิดพลาดประกอบด้วยข้อมูลสำคัญเกี่ยวกับสาเหตุที่ทำให้เกิดสถานะรอการกู้คืน

  1. จุดเปิด SQL Server สตูดิโอการจัดการ
  2. นำทางไปยัง การจัดการ -> SQL Server ท่อน
  3. คลิกสองครั้งที่บันทึกปัจจุบันเพื่อดูข้อผิดพลาดล่าสุด
  4. ค้นหาข้อความแสดงข้อผิดพลาดที่เกี่ยวข้องกับฐานข้อมูลของคุณ

การตรวจสอบ SQL Server บันทึกข้อผิดพลาดสำหรับข้อผิดพลาดล่าสุดที่เกี่ยวข้องกับฐานข้อมูลของคุณ

หรือใช้ T-SQL:

EXEC sp_readerrorlog;

2.2 ตรวจสอบบันทึกเหตุการณ์ Windows

  1. ข่าวประชาสัมพันธ์ คีย์ Windows + R
  2. ประเภท eventvwr.msc และกด Enter
    เปิดตัวแสดงเหตุการณ์ของ Windows
  3. นำทางไปยัง แฟ้มบันทึกของ windows -> System และ การใช้งาน
  4. มองหา SQL Server ข้อผิดพลาดที่เกี่ยวข้องรอบเวลาที่ปัญหาเกิดขึ้น

ใน Event Viewer ให้มองหา SQL Server ข้อผิดพลาดที่เกี่ยวข้องซึ่งอาจทำให้เกิดปัญหาการกู้คืนฐานข้อมูล SQL

2.3 ตรวจสอบการเข้าถึงไฟล์

  1. นำทางไปยังตำแหน่งไฟล์ฐานข้อมูลของคุณ
  2. ตรวจสอบว่าไฟล์ MDF และ LDF มีอยู่
  3. ตรวจสอบว่าไดรฟ์ออนไลน์และสามารถเข้าถึงได้หรือไม่
  4. ยืนยันว่าไดรฟ์เครือข่ายได้รับการติดตั้งอย่างถูกต้อง

3. วิธีแก้ไข #1: รีสตาร์ทเครื่อง SQL Server บริการของเรา

การเริ่มต้นใหม่ SQL Server บริการนี้ช่วยแก้ไขปัญหาการกู้คืนฐานข้อมูล SQL ที่ค้างอยู่จำนวนมาก ซึ่งเกิดจากปัญหาด้านเวลาหรือความขัดแย้งของทรัพยากรชั่วคราว

3.1 เมื่อการรีสตาร์ทบริการทำงาน

วิธีการนี้มีประสิทธิผลสำหรับ:

  • การล็อกทรัพยากรชั่วคราวระหว่างการเริ่มต้นระบบ
  • ความล่าช้าในการพร้อมใช้งานของไดรฟ์
  • ปัญหาเรื่องเวลาการพึ่งพาบริการ
  • ความขัดแย้งในการกำหนดค่าเล็กน้อย

3.2 วิธีการรีสตาร์ท SQL Server บริการของเรา

วิธีฮิต: SQL Server เครื่องมือจัดการการกำหนดค่า

  1. จุดเปิด SQL Server เครื่องมือจัดการการกำหนดค่า
  2. คลิก SQL Server บริการของเรา
  3. คลิกขวาที่ SQL Server เช่นเช่น SQL Server (MSSQLSERVER)
  4. เลือก เริ่มต้นใหม่
  5. รอจนกว่าบริการจะเริ่มต้นทำงานอย่างสมบูรณ์

รีสตาร์ทไฟล์ SQL Server บริการใน SQL Server เครื่องมือจัดการการกำหนดค่า

วิธีที่ 2: คอนโซลบริการ

  1. ข่าวประชาสัมพันธ์ คีย์ Windows + R
  2. ประเภท services.msc และกด Enter
    เปิดคอนโซลบริการ Windows
  3. หา SQL Server เช่นเช่น SQL Server (MSSQLSERVER)
  4. คลิกขวาและเลือก เริ่มต้นใหม่

รีสตาร์ทไฟล์ SQL Server บริการในคอนโซลบริการเพื่อแก้ไขปัญหาการกู้คืนฐานข้อมูล SQL ที่รอดำเนินการ

วิธีที่ 3: PowerShell

Restart-Service -Name "MSSQLSERVER" -Force

3.3 การตรวจสอบหลังการรีสตาร์ท

  1. รอ 2-3 นาทีเพื่อให้ระบบเริ่มต้นทำงานอย่างสมบูรณ์
  2. ตรวจสอบสถานะฐานข้อมูลใน SSMS
  3. ตรวจสอบบันทึกข้อผิดพลาดสำหรับข้อความใหม่ ๆ
  4. ทดสอบการเชื่อมต่อฐานข้อมูล

4. แก้ไข #2: ตรวจสอบและแก้ไขปัญหาพื้นที่ดิสก์

พื้นที่ดิสก์ไม่เพียงพอเป็นสาเหตุทั่วไปของปัญหาการกู้คืนฐานข้อมูล SQL ที่ค้างอยู่ การดำเนินการกู้คืนต้องใช้พื้นที่เพิ่มเติมสำหรับไฟล์ชั่วคราวและการเติบโตของไฟล์บันทึก

4.1 การระบุปัญหาพื้นที่ดิสก์

  1. จุดเปิด File Explorer
  2. นำทางไปยังไดรฟ์ที่มีไฟล์ฐานข้อมูล
  3. ตรวจสอบพื้นที่ว่างที่ว่างอยู่
  4. ให้แน่ใจว่ามีพื้นที่ว่างอย่างน้อย 10-20% สำหรับการดำเนินการกู้คืน

4.2 การเพิ่มพื้นที่ว่างบนดิสก์

  1. ลบไฟล์ชั่วคราวที่ไม่จำเป็น
  2. ล้างข้อมูล SQL Server ไฟล์สำรองหากพื้นที่สำคัญ
  3. ย้ายไฟล์ที่ไม่จำเป็นไปยังไดรฟ์อื่น
  4. ย่อขนาดไฟล์ฐานข้อมูลอื่นหากเป็นไปได้

ย่อขนาดไฟล์ฐานข้อมูล (ใช้ด้วยความระมัดระวัง):

DBCC SHRINKFILE (logicalfilename, target_size);

4.3 การตั้งค่าฐานข้อมูลออนไลน์หลังจากแก้ไขพื้นที่

เมื่อมีพื้นที่ว่าง ให้พยายามนำฐานข้อมูลออนไลน์:

ALTER DATABASE [DatabaseName] SET ONLINE;

5. แก้ไข #3: ตั้งค่า SQL Server บริการเริ่มต้นล่าช้า

การตั้งค่า SQL Server การตั้งค่าการเริ่มต้นล่าช้าจะช่วยแก้ไขปัญหาการกู้คืนฐานข้อมูล SQL ที่ค้างอยู่ ซึ่งเกิดจากระบบจัดเก็บข้อมูลหรือไดรฟ์เครือข่ายไม่พร้อมใช้งานระหว่างการบูตระบบ

5.1 การทำความเข้าใจปัญหาเรื่องเวลา

ปัญหาเรื่องเวลาเกิดขึ้นเมื่อ:

  • SAN หรือที่เก็บข้อมูลเครือข่ายต้องใช้เวลาในการเริ่มต้น
  • ตัวอักษรไดรฟ์ไม่ได้รับการกำหนดในระหว่างการบูตในช่วงต้น
  • ไดรฟ์เครือข่ายต้องมีการตรวจสอบสิทธิ์
  • ตัวควบคุมการจัดเก็บข้อมูลต้องใช้เวลาในการเริ่มต้น

5.2 การกำหนดค่าการเริ่มต้นล่าช้า

  1. ข่าวประชาสัมพันธ์ คีย์ Windows + R
  2. ประเภท services.msc และกด Enter
    เปิดคอนโซลบริการ Windows
  3. หา SQL Server เช่นเช่น SQL Server (MSSQLSERVER)
  4. คลิกขวาและเลือก อสังหาริมทรัพย์
  5. เปลี่ยนแปลง ชนิดการเริ่มต้น ไปยัง อัตโนมัติ (Delayed Start)
    เปลี่ยนแปลง SQL Server ตั้งค่าประเภทการเริ่มต้นเป็นอัตโนมัติ (เริ่มต้นแบบหน่วงเวลา) เพื่อแก้ไขปัญหาการกู้คืนฐานข้อมูล SQL ที่ค้างอยู่
  6. คลิก OK
  7. รีสตาร์ทระบบเพื่อทดสอบ

5.3 ทางเลือกในการแก้ปัญหาเรื่องเวลา

หากต้องการควบคุมเพิ่มเติม ให้สร้างงานตามกำหนดเวลา:

  1. จุดเปิด Task Scheduler
  2. คลิก การดำเนินการ -> สร้างงานพื้นฐาน
  3. ใส่ข้อมูล ชื่อ และ รายละเอียด ของงาน เช่น “เลื่อนเวลาเริ่มต้นของ” SQL Server บริการ"
  4. ชุด ทริกเกอร์ ไปยัง เมื่อคอมพิวเตอร์เริ่มทำงาน
  5. ชุด การกระทำ ไปยัง จุดเริ่มต้นของโปรแกรม
  6. ชุด โปรแกรม / สคริปต์ สู่เส้นทางเต็มของ Sqlservr.exeเช่นนี้: C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Binn\sqlservr.exe คุณสามารถใช้ฟังก์ชันค้นหาใน Windows เพื่อค้นหาไฟล์ได้
  7. ในหน้าเสร็จสิ้นให้เลือก เปิดกล่องโต้ตอบคุณสมบัติสำหรับงานนี้เมื่อฉันคลิกเสร็จสิ้น.
    สร้างงานให้เริ่มต้นแบบหน่วงเวลา SQL Server ในตัวกำหนดเวลาการทำงาน Windows
  8. คลิก เสร็จสิ้น.
  9. ในกล่องโต้ตอบคุณสมบัติงาน คลิก ทริกเกอร์ แถบ
  10. เลือกทริกเกอร์และคลิก Edit
    แก้ไขทริกเกอร์งานในกล่องโต้ตอบคุณสมบัติงาน
  11. ในการตั้งค่าขั้นสูง ให้ตรวจสอบ การเลื่อนงานสำหรับ: และตั้งเวลาเป็น 3 นาที
    ตั้งค่าให้เริ่มงานล่าช้าหลังจาก 3 นาที เพื่อแก้ไขข้อผิดพลาด "การกู้คืนฐานข้อมูล SQL ค้างอยู่"
  12. คลิก ตกลง

6. แก้ไข #4: แก้ไขสิทธิ์การเข้าถึงไฟล์และสิทธิ์การเข้าถึง

ปัญหาเรื่องการอนุญาตป้องกันไม่ให้ SQL Server จากการเข้าถึงไฟล์ฐานข้อมูล นำไปสู่สถานะรอการกู้คืนฐานข้อมูล SQL สิทธิ์การเข้าถึงไฟล์ที่ถูกต้องเป็นสิ่งสำคัญสำหรับการดำเนินงานฐานข้อมูล

6.1 ปัญหาการอนุญาตทั่วไป

  • SQL Server บัญชีบริการขาดสิทธิ์การเข้าถึงไฟล์
  • ซอฟต์แวร์ป้องกันไวรัสบล็อกการเข้าถึงไฟล์
  • การเปลี่ยนแปลงนโยบายความปลอดภัย
  • ปัญหาการอนุญาตการแชร์เครือข่าย

6.2 การแก้ไขสิทธิ์ของโฟลเดอร์

  1. นำทางไปยังโฟลเดอร์ไฟล์ฐานข้อมูล
  2. คลิกขวาที่โฟลเดอร์และเลือก อสังหาริมทรัพย์
  3. คลิก ⁠ความปลอดภัย แถบ
  4. คลิก Edit
  5. เพิ่ม SQL Server บัญชีบริการหากหายไป
  6. ให้ ควบคุมทั้งหมด สิทธิ์
  7. คลิก OK เพื่อใช้การเปลี่ยนแปลง

ตรวจสอบและแก้ไขการอนุญาตของ SQL Server บัญชีบริการสำหรับ SQL Server โฟลเดอร์ข้อมูล

การใช้บรรทัดคำสั่ง (icacls):

icacls "C:\Data" /grant "NT SERVICE\MSSQLSERVER":F /T

6.3 การพิจารณาบัญชีบริการ

ตรวจสอบ SQL Server บัญชีบริการ:

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

ตรวจสอบ SQL Server บัญชีบริการเพื่อแก้ไขปัญหาการกู้คืนฐานข้อมูล SQL ที่ค้างอยู่

7. แก้ไข #5: การแก้ไขเส้นทางไฟล์ด้วยตนเอง

ปัญหาเส้นทางไฟล์เกิดขึ้นเมื่อไฟล์ฐานข้อมูลถูกย้ายหรือมีการเปลี่ยนแปลงอักษรไดรฟ์ วิธีการนี้จะอัปเดต SQL Serverการอ้างอิงไฟล์ภายในโดยไม่ต้องย้ายไฟล์จริง

7.1 เมื่อเกิดปัญหาเส้นทาง

  • การเปลี่ยนแปลงฮาร์ดแวร์เซิร์ฟเวอร์
  • การกำหนดตัวอักษรไดรฟ์ใหม่
  • การปรับเปลี่ยนเส้นทางเครือข่าย
  • การย้ายไฟล์ฐานข้อมูล

7.2 การแก้ไขเส้นทางไฟล์

  1. ระบุเส้นทางไฟล์ปัจจุบันในบันทึกข้อผิดพลาด
  2. ค้นหาไฟล์ฐานข้อมูลจริง
  3. ใช้ 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 ขั้นตอนการตรวจสอบ

  1. เริ่มต้นใหม่ SQL Server บริการ
  2. ตรวจสอบสถานะฐานข้อมูล
  3. ตรวจสอบบันทึกข้อผิดพลาดสำหรับข้อความที่เกี่ยวข้องกับเส้นทาง
  4. ทดสอบการเชื่อมต่อฐานข้อมูล

8. แก้ไข #6: นำฐานข้อมูลออฟไลน์แล้วออนไลน์

การเปลี่ยนแปลงสถานะอย่างง่ายนี้สามารถแก้ไขปัญหาการกู้คืนฐานข้อมูล SQL ที่ค้างอยู่เล็กน้อยได้ โดยการบังคับให้เกิดการเปลี่ยนสถานะอย่างราบรื่นและล้างการล็อกชั่วคราว

8.1 เมื่อวิธีนี้ได้ผล

  • ความไม่สอดคล้องกันเล็กน้อยของรัฐ
  • การล็อกทรัพยากรชั่วคราว
  • กระบวนการกู้คืนแบบง่ายรีเซ็ต
  • เงื่อนไขข้อผิดพลาดที่ไม่สำคัญ

8.2 ขั้นตอนออฟไลน์/ออนไลน์

  1. ตรวจสอบให้แน่ใจว่าไม่มีการเชื่อมต่อที่ใช้งานอยู่กับฐานข้อมูล
  2. ดำเนินการคำสั่งออฟไลน์
  3. รอสักครู่
  4. ดำเนินการคำสั่งออนไลน์

วิธีการที่ปลอดภัย (รอให้การเชื่อมต่อปิด):

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 สตูดิโอการจัดการ:

  1. คลิกขวาที่ฐานข้อมูล
  2. เลือก อสังหาริมทรัพย์
  3. ไปที่ ตัวเลือก หน้า
  4. ชุด ปิดอัตโนมัติ ไปยัง เท็จ
  5. คลิก OK

ปิดใช้งานคุณสมบัติปิดอัตโนมัติสำหรับ SQL Server ฐานข้อมูลใน SQL Server Management Studio เพื่อแก้ไขปัญหาการกู้คืนฐานข้อมูล SQL ที่ค้างอยู่

9.3 การตั้งค่าอัตโนมัติที่เกี่ยวข้อง

พิจารณาปิดการใช้งาน AUTO_SHRINK เพื่อประสิทธิภาพที่ดีขึ้นด้วย:

ALTER DATABASE [DatabaseName] SET AUTO_SHRINK OFF;

10. วิธีแก้ไข #8: ลบไฟล์บันทึกที่เสียหายและรีสตาร์ทเครื่อง

วิธีนี้ใช้ได้เมื่อไฟล์บันทึกธุรกรรมเสียหายอย่างรุนแรงจนไม่สามารถซ่อมแซมได้ ควรใช้เฉพาะในสภาพแวดล้อมการพัฒนา หรือเมื่อข้อมูลสูญหายในระดับที่ยอมรับได้

10.1 เมื่อการลบบันทึกมีความเหมาะสม

⚠️ คำเตือนที่สำคัญ: วิธีการนี้ทำให้สูญเสียข้อมูล!

ใช้เฉพาะเมื่อ:

  • การทำงานกับฐานข้อมูลการพัฒนา/ทดสอบ
  • ไฟล์บันทึกเสียหายอย่างสมบูรณ์
  • ไม่มีตัวเลือกการกู้คืนอื่น ๆ
  • มีการสำรองข้อมูลล่าสุด

10.2 ขั้นตอนการลบไฟล์บันทึก

  1. หยุด SQL Server บริการครบวงจร
  2. นำทางไปยังตำแหน่งไฟล์ฐานข้อมูล
  3. ลบไฟล์ .LDF (เก็บไฟล์ .MDF ไว้)
  4. เริ่มต้น SQL Server บริการ
  5. SQL Server จะสร้างไฟล์บันทึกใหม่โดยอัตโนมัติ

10.3 คำเตือนที่สำคัญ

ผลกระทบจากการสูญเสียข้อมูล:

  • ธุรกรรมที่ยังไม่ได้รับการยืนยันทั้งหมดจะสูญหายไปอย่างถาวร
  • โซ่บันทึกขาด – การสำรองข้อมูลแบบแยกส่วนไม่ถูกต้อง
  • การกู้คืนเฉพาะจุดเวลาเป็นไปไม่ได้
  • ใช้เฉพาะในสภาพแวดล้อมที่ไม่ใช่การผลิตเท่านั้น

11. แก้ไข #9: แยกและแนบฐานข้อมูลใหม่

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

11.1 เมื่อการถอด/ติดใหม่ทำงาน

  • ไฟล์บันทึกที่หายไป
  • ส่วนหัวของไฟล์บันทึกเสียหาย
  • การเปลี่ยนแปลงเส้นทางไฟล์บันทึก
  • สถานการณ์การทุจริตแบบง่ายๆ

11.2 ขั้นตอนการถอด/ติดกลับมาตรฐาน

  1. ตั้งค่าฐานข้อมูลเป็นโหมดฉุกเฉินก่อน
  2. เปลี่ยนเป็นโหมดผู้ใช้หลายคน
  3. แยกฐานข้อมูลออก
  4. แนบใหม่โดยใช้ไฟล์ 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 กระบวนการสร้างบันทึกใหม่

⚠️ คำเตือน: สิ่งนี้ทำให้สูญเสียข้อมูล!

  1. ตั้งค่าฐานข้อมูลเป็นโหมดฉุกเฉิน
  2. ใช้คำสั่ง REBUILD LOG
  3. ระบุตำแหน่งไฟล์บันทึกใหม่
  4. นำฐานข้อมูลออนไลน์
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 ขั้นตอนการซ่อมแซมฉุกเฉิน

  1. ทำการสำรองไฟล์ฐานข้อมูลที่เสียหายก่อน
  2. ตั้งค่าฐานข้อมูลเป็นโหมดฉุกเฉิน
  3. สลับไปยังโหมดผู้ใช้รายเดียว
  4. เรียกใช้ CHECKDB พร้อมตัวเลือกการซ่อมแซม
  5. กลับสู่โหมดผู้ใช้หลายคน
-- 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 การประเมินหลังการซ่อมแซม

  1. ตรวจสอบผลลัพธ์ CHECKDB สำหรับการดำเนินการซ่อมแซม
  2. ตรวจสอบตารางหรือข้อมูลที่หายไป
  3. ตรวจสอบฟังก์ชันการทำงานของแอปพลิเคชันที่สำคัญ
  4. หากข้อมูลสูญหายเป็นจำนวนมาก ควรพิจารณาการกู้คืนจากข้อมูลสำรอง

14. แก้ไข #12: ตรวจสอบและแก้ไขการกำหนดค่า FILESTREAM

ปัญหาการกำหนดค่า FILESTREAM อาจทำให้เกิดปัญหาระหว่างการกู้คืนฐานข้อมูล SQL วิธีนี้ช่วยแก้ไขปัญหาความล้มเหลวในการกู้คืนข้อมูลเฉพาะของ FILESTREAM

14.1 ปัญหาการกู้คืนที่เกี่ยวข้องกับ FILESTREAM

  • ความล้มเหลวในการเชื่อมต่อไดรเวอร์ FILESTREAM
  • การกำหนดค่าไม่ตรงกันระหว่าง SQL Server และ OS
  • ปัญหาเรื่องจังหวะเวลาในระหว่างการเริ่มต้นบริการ
  • ปัญหาการอนุญาตกับคอนเทนเนอร์ FILESTREAM

14.2 การแก้ไขปัญหา FILESTREAM

  1. ตรวจสอบระดับการกำหนดค่า FILESTREAM
  2. ตรวจสอบว่าฟีเจอร์ Windows เปิดใช้งานอยู่
  3. เริ่มบริการที่จำเป็นใหม่อีกครั้ง
  4. ตรวจสอบสิทธิ์คอนเทนเนอร์ 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 กระบวนการอัปเดต

  1. ตรวจสอบปัจจุบัน SQL Server รุ่น
  2. ระบุชุดบริการล่าสุดที่มีอยู่
  3. ดาวน์โหลดจาก ศูนย์ดาวน์โหลดของไมโครซอฟท์ ลิ้งค์ภายนอก
  4. กำหนดหน้าต่างการบำรุงรักษา
  5. ติดตั้งเซอร์วิสแพ็ค
  6. เริ่มบริการใหม่
  7. ตรวจสอบการทำงานของฐานข้อมูล

ตรวจสอบเวอร์ชันปัจจุบัน:

SELECT @@VERSION;

15.3 การตรวจสอบหลังการอัปเดต

  1. ยืนยันหมายเลขเวอร์ชันที่เปลี่ยนแปลง
  2. ตรวจสอบฐานข้อมูลทั้งหมดให้ออนไลน์อย่างถูกต้อง
  3. รันการทดสอบฟังก์ชันพื้นฐาน
  4. ตรวจสอบบันทึกข้อผิดพลาดสำหรับปัญหาใหม่ๆ

16. แก้ไข #14: กู้คืนฐานข้อมูลจากการสำรองข้อมูล

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

16.1 เมื่อการกู้คืนข้อมูลสำรองเป็นทางออก

  • ความพยายามซ่อมแซมหลายครั้งล้มเหลว
  • ข้อมูลการผลิตที่สำคัญต้องมีความแน่นอน
  • มีหน้าต่างการสูญเสียข้อมูลที่ยอมรับได้
  • คอร์รัปชั่นมีมากเกินกว่าจะแก้ไขได้

16.2 กระบวนการคืนค่าฐานข้อมูลแบบเต็ม

  1. ระบุไฟล์สำรองข้อมูลล่าสุดที่ใช้งานได้
  2. ตรวจสอบให้แน่ใจว่ามีพื้นที่ว่างในดิสก์เพียงพอสำหรับการคืนค่า
  3. ออฟไลน์ฐานข้อมูลหรือลบทิ้งหากจำเป็น
  4. คืนค่าจากไฟล์สำรอง
  5. ใช้การสำรองข้อมูลบันทึกหากมี

การคืนค่าพื้นฐานจากการสำรองข้อมูลเต็มรูปแบบ:

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 การตรวจสอบและการทดสอบ

  1. ตรวจสอบฐานข้อมูลออนไลน์สำเร็จ
  2. ตรวจสอบความสมบูรณ์ของข้อมูลด้วย CHECKDB
  3. ทดสอบฟังก์ชันการใช้งานที่สำคัญ
  4. ยืนยันว่าการสำรองข้อมูล/คืนค่าเสร็จสมบูรณ์โดยไม่มีข้อผิดพลาด

16.4 ข้อมูลอ้างอิง

คุณสามารถเรียนรู้ข้อมูลเพิ่มเติมได้จาก คำแนะนำที่ครอบคลุมเกี่ยวกับวิธีการสำรองข้อมูลและคืนค่า SQL Server ฐานข้อมูล.

17. แก้ไข #15: เครื่องมือการกู้คืน SQL ระดับมืออาชีพ

เมื่อวิธีการด้วยตนเองไม่สามารถแก้ไขปัญหาการกู้คืนฐานข้อมูล SQL ที่ค้างอยู่ได้ ซอฟต์แวร์กู้คืนเฉพาะทางสามารถดึงข้อมูลจากฐานข้อมูลที่เสียหายร้ายแรงซึ่งไม่สามารถซ่อมแซมได้ด้วยวิธีมาตรฐาน

17.1 เมื่อใดควรพิจารณาใช้เครื่องมือของบุคคลที่สาม

  • การทุจริตร้ายแรงเกินกว่าความสามารถในการซ่อมแซมด้วยมือ
  • ข้อมูลสำคัญที่ไม่มีการสำรองข้อมูล
  • ความพยายามซ่อมแซมด้วยตนเองล้มเหลวหลายครั้ง
  • ข้อกำหนดการกู้คืนที่สำคัญตามเวลา

17.2 DataNumen SQL Recovery

DataNumen SQL Recovery ที่มีประสิทธิภาพ SQL Server เครื่องมือการกู้คืนฐานข้อมูล

ขั้นตอนการใช้งานมีดังต่อไปนี้:

  1. หยุด SQL Server บริการ.
    หยุด SQL Server บริการในคอนโซลบริการ
  2. สร้างสำเนาของไฟล์ฐานข้อมูลในสถานะรอการกู้คืน ซึ่งรวมถึงไฟล์ MDF หลักและไฟล์ NDF รอง
  3. เริ่มต้น SQL Server บริการ.
  4. เริ่มต้น DataNumen SQL Recovery.
  5. เลือกสำเนาแทนไฟล์ต้นฉบับเป็นแหล่งที่มาของฐานข้อมูลที่จะกู้คืน
  6. คลิก “เริ่มการกู้คืน” และทำตามคำแนะนำเพื่อกู้คืนฐานข้อมูล
  7. หลังจากกระบวนการกู้คืนฐานข้อมูลการกู้คืนใหม่จะปรากฏขึ้นใน SQL Server ซึ่งมีข้อมูลที่กู้คืนมาทั้งหมด

ใช้ DataNumen SQL Recovery เพื่อซ่อมแซมส่วนที่เสียหายเพียงอันเดียว SQL Server ไฟล์ MDF และแก้ไขข้อผิดพลาดที่รอการกู้คืนฐานข้อมูล SQL

18. สถานการณ์การแก้ไขปัญหาขั้นสูง

สภาพแวดล้อมที่ซับซ้อนต้องใช้วิธีการเฉพาะทางในการแก้ไขปัญหาที่รอการกู้คืนฐานข้อมูล SQL

18.1 ปัญหาไฟล์ฐานข้อมูลหลายไฟล์

ฐานข้อมูลที่มีไฟล์ข้อมูลหลายไฟล์ (NDF) ต้องมีการจัดการอย่างระมัดระวัง:

  • ระบุกลุ่มไฟล์ที่ได้รับผลกระทบ
  • ตรวจสอบไฟล์ NDF ทั้งหมดเพื่อการเข้าถึง
  • พิจารณาตัวเลือกการกู้คืนเฉพาะกลุ่มไฟล์
  • จัดการกลุ่มไฟล์แบบอ่านอย่างเดียวอย่างเหมาะสม

18.2 กลุ่มความพร้อมใช้งานแบบเปิดเสมอ

การกู้คืนฐานข้อมูล SQL กำลังรอการดำเนินการ เสมอใน สภาพแวดล้อม:

  • ตรวจสอบสถานะการจำลองหลักก่อน
  • ตรวจสอบสถานะการซิงโครไนซ์
  • พิจารณาการลบและเพิ่มสำเนาที่มีปัญหาอีกครั้ง
  • ตรวจสอบการกำหนดค่ากลุ่มความพร้อมใช้งาน

18.3 สถานการณ์คลัสเตอร์และความพร้อมใช้งานสูง

กำลังดำเนินการกู้คืนฐานข้อมูล SQL คลัสเตอร์เฟลโอเวอร์ และ พร้อมใช้งานสูง สถานการณ์:

  • ตรวจสอบการเข้าถึงที่เก็บข้อมูลที่ใช้ร่วมกัน
  • ตรวจสอบการสื่อสารของโหนดคลัสเตอร์
  • ตรวจสอบบันทึกคลัสเตอร์ล้มเหลว
  • ตรวจสอบให้แน่ใจว่าการแก้ไข DNS ถูกต้อง

18.4 ปัญหา WMI และระดับระบบ

ปัญหาในระดับระบบอาจทำให้เกิดปัญหาฐานข้อมูลได้:

  • ความเสียหายของที่เก็บข้อมูล WMI
  • การอัปเดต Windows ล้มเหลว
  • การทุจริตของรีจิสทรี
  • ปัญหาการพึ่งพาบริการ

19. กลยุทธ์การป้องกัน

การป้องกันปัญหาที่ค้างอยู่ในการกู้คืนฐานข้อมูล SQL มีประสิทธิภาพมากกว่าการแก้ไขปัญหาหลังจากที่เกิดขึ้นแล้ว

19.1 แนวทางปฏิบัติที่ดีที่สุดในการสำรองข้อมูล

  1. ดำเนินการกำหนดการสำรองข้อมูลเต็มรูปแบบอัตโนมัติ
  2. กำหนดค่าการสำรองข้อมูลส่วนต่างปกติ
  3. ตั้งค่าการสำรองข้อมูลบันทึกธุรกรรมบ่อยครั้ง
  4. ทดสอบขั้นตอนการกู้คืนข้อมูลสำรองเป็นประจำ
  5. จัดเก็บข้อมูลสำรองบนระบบจัดเก็บข้อมูลแยกกัน
  6. ตรวจสอบความสมบูรณ์ของการสำรองข้อมูลด้วย RESTORE VERIFYONLY

19.2 การตรวจสอบและบำรุงรักษา

  1. ตั้งค่าการแจ้งเตือนการตรวจสอบพื้นที่ดิสก์
  2. กำหนดตารางการดำเนินการ DBCC CHECKDB เป็นประจำ
  3. การตรวจสอบ SQL Server บันทึกข้อผิดพลาดทุกวัน
  4. Implement การตรวจสอบพื้นฐานประสิทธิภาพ
  5. กำหนดค่า SQL Server การแจ้งเตือนตัวแทนสำหรับข้อผิดพลาดที่สำคัญ

19.3 การพิจารณาโครงสร้างพื้นฐาน

  • ติดตั้งระบบ UPS เพื่อป้องกันไฟฟ้า
  • ใช้ที่เก็บข้อมูลระดับองค์กรพร้อมความซ้ำซ้อน
  • ปฏิบัติตามขั้นตอนการปิดระบบอย่างถูกต้อง
  • รับประกันความเสถียรของเครือข่ายสำหรับการจัดเก็บข้อมูลร่วมกัน
  • การตรวจสอบสุขภาพฮาร์ดแวร์เป็นประจำ

19.4 SQL Server แนวทางปฏิบัติที่ดีที่สุดในการกำหนดค่า

  • เลือกโมเดลการกู้คืนที่เหมาะสม
  • กำหนดค่าการตั้งค่าการเติบโตอัตโนมัติที่เหมาะสม
  • แยกข้อมูลและไฟล์บันทึกบนไดรฟ์ที่แตกต่างกัน
  • ใช้บัญชีบริการเฉพาะที่มีสิทธิ์ขั้นต่ำ
  • เก็บ SQL Server อัปเดตด้วยเซอร์วิสแพ็คล่าสุด

20. การแก้ไขปัญหาต้นไม้การตัดสินใจและวิธีการ

ปฏิบัติตามแนวทางระบบนี้เมื่อพบปัญหาในการกู้คืนฐานข้อมูล SQL

20.1 แนวทางการวินิจฉัยเชิงระบบ

  1. ตรวจสอบบันทึกข้อผิดพลาดก่อน – เริ่มต้นด้วยเสมอ SQL Server และบันทึกของ Windows
  2. ตรวจสอบการเข้าถึงไฟล์ – ตรวจสอบให้แน่ใจว่าไฟล์ฐานข้อมูลทั้งหมดมีอยู่และสามารถอ่านได้
  3. ตรวจสอบพื้นที่ดิสก์ – ยืนยันพื้นที่เพียงพอสำหรับการดำเนินการกู้คืน
  4. ลองแก้ไขแบบง่ายๆ ก่อน – การรีสตาร์ทบริการ, ออฟไลน์/ออนไลน์
  5. ความก้าวหน้าสู่การซ่อมแซมที่ซับซ้อน – หลังจากวิธีง่ายๆ ล้มเหลวเท่านั้น
  6. พิจารณาการคืนค่าจากการสำรองข้อมูล – เมื่อความเสี่ยงในการซ่อมแซมสูงเกินไป

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 นาทีแรก:

  1. ตรวจสอบ SQL Server บันทึกข้อผิดพลาด
  2. ตรวจสอบการเข้าถึงไฟล์ฐานข้อมูล
  3. ตรวจสอบพื้นที่ว่างบนดิสก์
  4. ลองรีสตาร์ทบริการ
  5. ข้อความแสดงข้อผิดพลาดของเอกสาร

15 นาทีถัดไป:

  1. ลองเชื่อมต่อแบบออฟไลน์/ออนไลน์ หากการรีสตาร์ทบริการล้มเหลว
  2. ตรวจสอบและแก้ไขปัญหาการอนุญาตที่ชัดเจน
  3. ตรวจสอบเส้นทางไฟล์ให้ถูกต้อง
  4. ตรวจสอบบันทึกเหตุการณ์ Windows
  5. ประเมินความพร้อมใช้งานของการสำรองข้อมูล

22.3 แหล่งข้อมูลเพิ่มเติม

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


เกี่ยวกับผู้เขียน

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

หยวนมีความเชี่ยวชาญด้าน SQL Server การกู้คืนฐานข้อมูล โซลูชันความพร้อมใช้งานสูง และการเพิ่มประสิทธิภาพการทำงาน ประสบการณ์ภาคปฏิบัติอันกว้างขวางของเขาครอบคลุมการจัดการฐานข้อมูลหลายเทราไบต์ การนำ Always On Availability Groups มาใช้ และการพัฒนากลยุทธ์การสำรองและกู้คืนข้อมูลอัตโนมัติสำหรับระบบธุรกิจที่สำคัญต่อภารกิจ

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

มีคำถามเกี่ยวกับ SQL Server การกู้คืนหรือต้องการคำแนะนำในการแก้ไขปัญหาฐานข้อมูลเพิ่มเติมหรือไม่? หยวนยินดีต้อนรับ ข้อเสนอแนะและข้อเสนอแนะ เพื่อปรับปรุงทรัพยากรทางเทคนิคเหล่านี้

แบ่งปันเลย: