นี่เป็นถนนสองสามสายที่ฉันจะตรวจสอบ อย่าทำสิ่งเหล่านี้ทั้งหมด (บางส่วนเป็นเทคนิคที่แตกต่างกันเพื่อให้บรรลุจุดประสงค์เดียวกัน) แต่ควรพิจารณาด้วย:
1. ตรวจสอบ SQL Error Log โดยตรง
เรียกดูโดยตรงไปยังโฟลเดอร์ที่มีบันทึกข้อผิดพลาด SQL และโหลดล่าสุดERRORLOG
ลงในแผ่นจดบันทึกเพื่อรับรายละเอียดเพิ่มเติมว่าทำไมอินสแตนซ์ SQL จะไม่เริ่มทำงาน บางทีคุณอาจพบปัญหาไม่ได้อยู่กับฐานข้อมูลหลักเลย
2. ลองเริ่มอินสแตนซ์ในโหมดผู้ใช้คนเดียว
นี่คือรายการทั้งหมดของตัวเลือกการเริ่มต้นสำหรับเซิร์ฟเวอร์ SQLรวมถึง-m
(โหมดผู้ใช้คนเดียว) และ-f
(โหมดการกำหนดค่าขั้นต่ำ) ตัวเลือกอื่น ๆ ช่วยให้คุณสามารถระบุเส้นทางสำหรับฐานข้อมูลหลักหากเป็นปัญหา
หากคุณสามารถที่จะได้รับเช่นเริ่มทำตามขั้นตอนในบทความ MSDN คุณเชื่อมโยงสำหรับการเรียกคืนฐานข้อมูลหลักหรือรายละเอียดเกี่ยวกับเรื่องนี้โดยโทมัส Larock
หากแอปพลิเคชันอื่นคว้าการเชื่อมต่อผู้ใช้คนเดียวก่อนที่คุณจะทำได้ก่อนอื่นให้ปิดใช้งานตัวแทน SQL เพื่อไม่ให้เริ่ม ประการที่สองดูแนวคิดเกี่ยวกับคำถามนี้สำหรับการใช้-m"Application Name"
พารามิเตอร์เพื่อระบุชื่อแอปพลิเคชัน
3. กู้คืนmaster
ไปยังอินสแตนซ์อื่นและคัดลอกไฟล์
ฉันได้พบเพียงหนึ่งการกล่าวถึงเทคนิคที่ไม่มีเอกสารนี้ แต่ฉันใช้มันประสบความสำเร็จในสุดสัปดาห์ที่ผ่านมาดังนั้นมันอาจจะคุ้มค่าที่จะลอง
หากคุณไม่สามารถเริ่มต้นอินสแตนซ์ในโหมดผู้ใช้คนเดียวแต่คุณมีอินสแตนซ์ SQL อื่นที่ใช้รีลีสและบิลด์เดียวกันนั้นให้ลองกู้คืนการสำรองฐานข้อมูลต้นแบบที่ดีที่รู้จักล่าสุดจากเซิร์ฟเวอร์ที่ตายแล้วของคุณ
- คืนค่าเป็นชื่ออื่นแน่นอน (
master_please_god_let_this_work
) WITH MOVE
ดังนั้นคุณจะไม่เขียนทับmaster
บนเซิร์ฟเวอร์ที่ดี
WITH NORECOVERY
ฟื้นฟู ไม่แน่ใจว่าสิ่งนี้จำเป็น แต่ทำให้ฉันรู้สึกดีขึ้นที่ฉันรู้ว่าเซิร์ฟเวอร์ตัวอื่นจะไม่เปลี่ยนแปลงสิ่งใดในต้นแบบที่กู้คืนมา
- ตั้งเป็นออฟไลน์:
ALTER DATABASE [master_please_god_let_this_work] SET OFFLINE
- คัดลอกไฟล์ MDF และ LDF ที่กู้คืนจากเซิร์ฟเวอร์ที่ดีไปยังเซิร์ฟเวอร์ที่ตายแล้ว
- เปลี่ยนชื่อ
master.mdf
และmastlog.ldf
ไฟล์ตามที่จำเป็นเพื่อแทนที่ไฟล์มาสเตอร์ที่ไม่ดีด้วยเวอร์ชันที่คุณกู้คืน
- ข้ามนิ้วของคุณและเริ่มอินสแตนซ์
- ทางเลือก: ทำการกู้คืนต้นแบบใหม่บนเซิร์ฟเวอร์ที่เรียกคืน
master
ไม่แน่ใจว่านี้เป็นสิ่งจำเป็นเนื่องจากเรากำลังระวังสวยไม่ได้มีการเปลี่ยนแปลง
4. สร้างฐานข้อมูลระบบใหม่
หากคุณไม่มีอินสแตนซ์อื่นที่ใช้รุ่นเดียวกันหรือหากคุณไม่สะดวกในการใช้ขั้นตอนที่ไม่มีเอกสารที่ระบุไว้ใน # 3 หรือหากคุณไม่มีข้อมูลสำรองmaster
( ทำไมคุณไม่มีข้อมูลสำรอง ) คุณสามารถสร้างฐานข้อมูลระบบ SQL จากแผ่นดิสก์การติดตั้งเดิม :
Setup.exe /ACTION=REBUILDDATABASE /...
เมื่อเสร็จสมบูรณ์คุณสามารถทำตามขั้นตอนที่เชื่อมโยงไว้ก่อนหน้านี้เพื่อกู้คืนmaster
จากการสำรองข้อมูลที่ดีครั้งล่าสุดของคุณ คุณจะต้องเรียกคืนข้อมูลสำรองล่าสุดmsdb
เพื่อให้งานตารางงานและประวัติงานของคุณทั้งหมด
5. กู้คืนฐานข้อมูล USER ทั้งหมดเป็นอินสแตนซ์ SQL ใหม่ (หรือที่มีอยู่)
หากคุณมีอินสแตนซ์อื่นที่มีอยู่แล้วกำลังทำงานอยู่ (เวอร์ชัน SQL ที่เหมาะสมพื้นที่ว่างในดิสก์เพียงพอ) ฉันอาจจะเริ่มคืนค่าฐานข้อมูลจากข้อมูลสำรองล่าสุดในขณะที่ฉันกำลังทำงานกับขั้นตอนการแก้ไขปัญหาอื่น ๆ ข้างต้นในกรณีที่ฉันต้องการ
หากอินสแตนซ์ใหม่ของคุณ (หรือติดตั้งใหม่) มีการเข้าถึงดิสก์เดียวกันมันจะเร็วกว่ามากในการแนบเป็นฐานข้อมูลใหม่:
CREATE DATABASE foo
ON (FILENAME = 'D:\data\foo.mdf'),
(FILENAME = 'D:\data\foo_log.ldf')
FOR ATTACH;
6. ทำการเปลี่ยนแปลงอีกครั้งเพื่อ master
เมื่อคุณกู้คืนสำเร็จแล้วmaster
(โดยใช้เทคนิคใด ๆ ข้างต้น) คุณจะต้องตรวจสอบการเปลี่ยนแปลงใด ๆ ที่อาจสูญหายไปหากเกิดขึ้นหลังจากการสำรองข้อมูลที่คุณเพิ่งกู้คืน:
- การเปลี่ยนแปลงความปลอดภัย
- ฐานข้อมูลใหม่ (ไฟล์จะยังอยู่ในดิสก์เพียงแนบไฟล์)
- การตั้งค่าทั้งเซิร์ฟเวอร์
ไม่มีวิธีที่วิเศษในการค้นหาสิ่งเหล่านี้คุณจะต้องกลับไปที่เอกสารประกอบของ บริษัท ของคุณเองสำหรับการเปลี่ยนแปลงประเภทนี้หากคุณมี