ฐานข้อมูล SQL Server พร้อมที่จะรับแบบสอบถามเมื่อใด


11

ในไฟล์บันทึกข้อผิดพลาด SQL Server ฉันพบบรรทัดต่อไปนี้:

2018-02-22 14:10:58.95 spid17s     Starting up database 'msdb'.
2018-02-22 14:10:58.95 spid16s     Starting up database 'ReportServer'.
2018-02-22 14:10:58.95 spid18s     Starting up database 'ReportServerTempDB'.
2018-02-22 14:10:58.95 spid19s     Starting up database 'XYZ'.

ถ้าฉันตรวจสอบสถานะของฐานข้อมูล XYZ ก่อนหน้านี้มันกำลังONLINEใช้คำสั่งต่อไปนี้:

SELECT state_desc FROM sys.databases WHERE name='XYZ'

... แต่เมื่อฉันพยายามเชื่อมต่อกับฐานข้อมูลนี้โดยใช้แอปพลิเคชัน C # จะไม่สามารถเชื่อมต่อกับฐานข้อมูลได้

ข้อผิดพลาดคือ:

การเข้าสู่ระบบล้มเหลวสำหรับผู้ใช้ 'asd'
สาเหตุ: ไม่สามารถเปิดฐานข้อมูลที่ระบุอย่างชัดเจน

ฉันลองผู้ใช้สามคน (ผู้ใช้ Windows, sa, ผู้ใช้ SQL Server ที่กำหนดไว้สำหรับแอปพลิเคชัน) ปัญหาเกิดขึ้นเมื่อฉันเรียกใช้แอปพลิเคชันในการเริ่มต้นระบบปฏิบัติการ แต่ถ้าฉันเริ่มต้นด้วยตนเองหลังจากการเริ่มต้นไม่มีข้อผิดพลาดเกิดขึ้นดังนั้นฉันคิดว่าการตั้งค่า SQL Server และการตั้งค่าไฟร์วอลล์ทั้งหมดถูกต้อง

ฉันยังตรวจสอบก่อนหน้านี้ว่าสถานะการบริการกำลังทำงานอยู่

ฉันควรตรวจสอบอะไรอีกเพื่อให้แน่ใจว่าฐานข้อมูลออนไลน์จริงและพร้อมสำหรับการสืบค้น

ฉันกำลังมองหากุญแจที่บอกฉันว่ามันโอเคที่จะสืบค้นฐานข้อมูลแทนที่จะชะลอเวลา (แม้จะไม่ได้ขึ้นอยู่กับเหตุผลที่ชัดเจน)

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

คำตอบ:


23

ฐานข้อมูล SQL Server พร้อมที่จะยอมรับการสืบค้นทันทีที่:

SELECT DATABASEPROPERTYEX(N'database name', 'Collation')

NULLไม่ได้กลับ

จากเอกสารสำหรับDATABASEPROPERTYEX(Transact-SQL) :

หมายเหตุ: ONLINEสถานะอาจถูกส่งคืนในขณะที่ฐานข้อมูลกำลังถูกเปิดและยังไม่ถูกกู้คืน DATABASEPROPERTYEXเพื่อแจ้งเมื่อฐานข้อมูลสามารถยอมรับการเชื่อมต่อแบบสอบถามเปรียบเทียบทรัพย์สินของ ฐานข้อมูลสามารถยอมรับการเชื่อมต่อเมื่อการเปรียบเทียบฐานข้อมูลส่งคืนค่าที่ไม่เป็นค่าว่าง สำหรับฐานข้อมูล Always On แบบสอบถามdatabase_stateหรือคอลัมน์database_state_descsys.dm_hadr_database_replica_states


3

ฐานข้อมูล SQL Server เริ่มต้นขึ้น แต่จากนั้นพวกเขาจำเป็นต้องวิเคราะห์บันทึกธุรกรรมเพื่อย้อนกลับธุรกรรมไปข้างหน้า & ย้อนกลับ กระบวนการนี้สามารถใช้ที่ใดก็ได้จากมิลลิวินาทีถึงชั่วโมง (แม้กระทั่งวัน!) ในกรณีที่มีการทำธุรกรรมระยะยาวฐานข้อมูลผู้ใช้จำนวนมาก (คิดเป็นพัน) หรือฐานข้อมูลที่มีจำนวนมาก (คิดเป็นหมื่น) จากล็อกไฟล์เสมือน

หากคุณต้องการให้แอปเข้าสู่ระบบเมื่อการกู้คืนเสร็จสิ้นและฐานข้อมูลพร้อมให้แอปพลิเคชันลองเชื่อมต่ออีกครั้ง

หากคุณต้องการให้แอพสามารถเข้าถึง SQL Server ได้ทันทีแต่อาจจะยังไม่สามารถเรียกใช้คิวรีใด ๆ ให้ตั้งค่าฐานข้อมูลเริ่มต้นเป็น TempDB แทนฐานข้อมูลผู้ใช้ เป็นไปได้ว่าจะออนไลน์ทันทีแม้ว่าฐานข้อมูลผู้ใช้จะไม่พร้อมใช้งาน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.