ไม่สามารถเปิดฐานข้อมูล MSDB ได้

ฉันได้รับปัญหานี้ในอินสแตนซ์ในเครื่องของ SQL Server 2008 R2 บนเครื่องของฉัน มีหลายฐานข้อมูลในกรณีนี้ แต่ฉันไม่สามารถเห็นสิ่งใดเลยจาก Object Explorer

ฉันสามารถสืบค้นฐานข้อมูลของฉันได้จากหน้าต่างสืบค้นใหม่ แต่ไม่อาจมองเห็นสิ่งเหล่านั้นได้

เมื่อใดก็ตามที่ฉันพยายามสำรวจฐานข้อมูล ฉันได้รับข้อผิดพลาดนี้:

ไม่สามารถเปิดฐานข้อมูล 'msdb' ได้ มันถูกทำเครื่องหมายว่าต้องสงสัยโดยการกู้คืน ดูบันทึกข้อผิดพลาดของ SQL Server สำหรับข้อมูลเพิ่มเติม (เซิร์ฟเวอร์ Microsoft SQL ข้อผิดพลาด: 926)

ฉันเหนื่อย

  1. กำลังรีเฟรชการเชื่อมต่อ
  2. กำลังเชื่อมต่อการเชื่อมต่ออีกครั้ง
  3. การรีสตาร์ทบริการ Sql Server (MSSQLSERVER)
  4. การรีสตาร์ท Studio จัดการเซิร์ฟเวอร์ SQL
  5. กำลังรีสตาร์ทเครื่องของฉัน

ฉันได้ลองใช้ชุดค่าผสมข้างต้นแล้ว แต่ก็ไม่ได้ผล

ระบบปฏิบัติการของฉันคือ Windows 7 Ultimate (64 บิต)

เวอร์ชัน Studio จัดการเซิร์ฟเวอร์ SQL คือ 10.50.2500.0


person Devraj Gadhavi    schedule 26.04.2013    source แหล่งที่มา


คำตอบ (3)


ฉันพบคำตอบในลิงก์นี้

แก้ไข : รวมถึงทั้งสองวิธีจากลิงก์เนื่องจากเป็นไปได้ Linkrot ในอนาคต

เข้าสู่ระบบด้วยบัญชี sa สำหรับทั้งสองวิธี

โซลูชันที่ 1

  1. เปิดหน้าต่างแบบสอบถามใหม่

  2. EXEC sp_resetstatus 'DB_Name'; (คำอธิบาย :sp_resetstatus ปิดแฟล็กต้องสงสัยในฐานข้อมูล ขั้นตอนนี้จะอัปเดตโหมดและคอลัมน์สถานะของฐานข้อมูลที่มีชื่อใน sys.databases นอกจากนี้ โปรดทราบว่าเฉพาะการเข้าสู่ระบบที่มีสิทธิ์ดูแลระบบเท่านั้นที่สามารถทำได้)

  3. ALTER DATABASE DB_Name SET EMERGENCY; (คำอธิบาย: เมื่อฐานข้อมูลถูกตั้งค่าเป็นโหมดฉุกเฉิน ฐานข้อมูลจะกลายเป็นสำเนา READ_ONLY และเฉพาะสมาชิกของบทบาทเซิร์ฟเวอร์คงที่ของผู้ดูแลระบบเท่านั้นที่มีสิทธิ์ในการเข้าถึง)

  4. DBCC checkdb('DB_Name'); (คำอธิบาย : ตรวจสอบความสมบูรณ์ของออบเจ็กต์ทั้งหมด)

  5. ALTER DATABASE DB_Name SET SINGLE_USER WITH ROLLBACK IMMEDIATE; (คำอธิบาย : ตั้งค่าฐานข้อมูลเป็นโหมดผู้ใช้คนเดียว)

  6. DBCC CheckDB ('DB_Name', REPAIR_ALLOW_DATA_LOSS); (คำอธิบาย : ซ่อมแซมข้อผิดพลาด)

  7. ALTER DATABASE DB_Name SET MULTI_USER; (คำอธิบาย : ตั้งค่าฐานข้อมูลเป็นโหมดผู้ใช้หลายคน เพื่อให้ผู้อื่นสามารถเข้าถึงได้)

โซลูชันที่ 2

  1. ใน Object Explorer --> รายการการเชื่อมต่อที่เปิด --> คลิกขวา --> หยุด Object Explorer

  2. เปิดแผงควบคุม --> เครื่องมือการดูแลระบบ --> บริการ แผงควบคุม -› เครื่องมือการดูแลระบบ ->บริการ

  3. เลือก Sql Server (MSSQLSERVER) รายการจากบริการ --> คลิกขวา --> หยุด หยุดเซิร์ฟเวอร์ Sql (MSSQLSERVER)

  4. เปิด C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA

  5. ย้าย MSDBData.mdf & MSDBlog.ldf ไปยังที่อื่น

  6. จากนั้นคัดลอกไฟล์นี้อีกครั้งจากที่ใหม่และวางไว้ที่เก่ากว่า

    C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA

  7. ในการเชื่อมต่อที่เปิดอยู่ในวัตถุ Explorer --> คลิกขวา --> เริ่ม

  8. จากนั้นรีเฟรชฐานข้อมูล

  9. จากนั้นคุณสามารถแยกไฟล์ MSDB ได้

วิธีที่ 2 ใช้ได้ผลสำหรับฉัน

หมายเหตุ: ฉันต้องได้รับไฟล์ mdf และ ldf ฐานข้อมูล "msdb" จากเครื่องอื่นเพื่อให้มันทำงานได้

person Devraj Gadhavi    schedule 08.05.2013
comment
โปรดทราบว่า msdb มีงานที่ดำเนินการโดยตัวแทน SQL คุณจะสูญเสียข้อมูลนี้หากคุณเพิ่งหยิบไฟล์ .ldf และ .mdf เหล่านี้จาก SQL Server ใดๆ ทางออกที่ดีที่สุดของคุณคือการคัดลอกไฟล์ msdb จากเครื่องที่ทำงานอื่น ๆ และกู้คืน MSDB จากการสำรองข้อมูลล่าสุดของอินสแตนซ์ที่มีปัญหา ซึ่งควรจะเป็นหนึ่งไฟล์ก่อนที่จะเกิดเหตุการณ์ - person Mike J; 11.12.2014
comment
G8. เมื่อลูกค้าโทรหาฉันเพื่อสิ่งนี้ ฉันพบทุกที่และไม่ได้รับคำตอบ ในที่สุดคุณก็ทำงานให้ฉัน ขอบคุณสำหรับงาน g8 นี้ - person sourabh devpura; 09.04.2015

สิ่งที่แก้ไขปัญหาของฉันได้ทันทีคือการแทนที่ไฟล์ MSDBData.mdf & MSDBlog.ldf ที่มีอยู่

ใน C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA ฉันได้คัดลอก 2 ไฟล์นี้จากเครื่องอื่นที่ทำงาน หยุดบริการ SQL ที่ทำงานอยู่ในเครื่องของฉัน ลบ 2 ไฟล์ที่มีอยู่ข้างต้นออกจากตำแหน่งและเพิ่ม 2 ไฟล์ใหม่ที่คัดลอก เมื่อฉันเริ่มบริการใหม่ ปัญหาได้รับการแก้ไขแล้ว

person Yashwant Kumar Sahu    schedule 18.02.2015

ลองสิ่งนี้

  • ตั้งค่าฐานข้อมูลเป็นโหมดผู้ใช้คนเดียว:

    แก้ไขฐานข้อมูล dbname ตั้ง single_user

  • ตอนนี้ตั้งค่าฐานข้อมูลเป็นโหมดฉุกเฉิน:

    แก้ไขฐานข้อมูล dbname ตั้งค่าฉุกเฉิน

  • ซ่อมแซมไฟล์บันทึกที่หายไปหรือไฟล์บันทึกที่เสียหายโดยมีข้อมูลสูญหาย

    DBCC CHECKDB ('dbname', REAPIR_ALLOW_DATA_LOSS)

  • ตอนนี้ตั้งค่า db ในโหมดผู้ใช้หลายคน

    แก้ไขฐานข้อมูล dbname ตั้งค่า multi_user

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

person Vignesh Kumar A    schedule 07.07.2021