DBCC CHECKDB ยิงทุก 20 - 60 วินาที


13

ฉันมีสภาพแวดล้อมแบบ dev ที่กำลังนำไปใช้งานอย่างรวดเร็วในการผลิตและสังเกตเห็นในบันทึกที่ประมาณทุกๆ 20 วินาทีที่ฉันเห็นข้อความ:

Starting up database 'dbname'
CHECKDB for database 'dbname' finished without errors

ฉันสังเกตเห็นสิ่งนี้เพราะผู้ใช้ปลายทางที่ทำการทดสอบนี้มีปัญหาซึ่งฉันแยกเป็นข้อผิดพลาดที่ฉันสังเกตเห็นในบันทึกเหตุการณ์ Windows (แอปพลิเคชันบันทึก):

The log for database 'dbname' is not available. Check event log for related messages.

บังเอิญฉันไม่พบข้อความที่เกี่ยวข้อง แต่แก้ไขด้วยรอบออฟไลน์ / ออนไลน์

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

แพลตฟอร์ม: SQL Server 2008 R2 (รายการ) บน Windows Server 2008 R2 (Std.)

คำตอบ:


22

เหตุผลที่คุณเห็นสิ่งนี้:

Starting up database 'dbname'
CHECKDB for database 'dbname' finished without errors

AutoCloseเป็นเพราะคุณมีตัวเลือกในฐานข้อมูลของคุณตั้งไว้สำหรับ

หากต้องการปิด AutoClose ให้ทำดังนี้

alter database YourDatabase
set auto_close off
go

สิ่งที่AutoCloseจะปิดฐานข้อมูลหลังจากกระบวนการผู้ใช้ล่าสุดยกเลิกการเชื่อมต่อ จากนั้นฐานข้อมูลจะ " เปิดใหม่ " โดยอัตโนมัติเมื่อการเชื่อมต่อผู้ใช้ครั้งต่อไปพยายามเชื่อมต่อ

โดยทั่วไปแล้ววิธีที่ดีที่สุดคือให้AutoCloseปิดเนื่องจากเวลาแฝงที่เห็นได้ชัดในการหมุนฐานข้อมูลอีกครั้ง ฉันเข้าใจจากคำถามของคุณว่านี่คือสภาพแวดล้อมการพัฒนา แต่คุณไม่จำเป็นต้องใช้มันเช่นกัน (และคุณไม่ต้องการสิ่งนั้นในสภาพแวดล้อมการผลิตของคุณ)

ยิ่งกว่าDBCC CHECKDBนั้นไม่ใช่การ "ยิงทุก ๆ 20 - 60 วินาที" ต่อชื่อคำถามมันก็ปรากฏแบบนั้น!

ตั้งแต่ SQL Server 2005 มีการรายงานค่าdbi_dbccLastKnownGood (ถ้ามี) ในบันทึกข้อผิดพลาดทุกครั้งที่ฐานข้อมูลเริ่มทำงาน ดังนั้นคุณเพียงแค่เห็นข้อมูลทางประวัติศาสตร์เดียวกับที่นำเสนอซ้ำ ๆ

หัวข้อนี้กล่าวถึงในบทความเหตุใด SQL Server จึงรัน DBCC CHECKDB กับฐานข้อมูลของฉันเมื่อเริ่มต้นเซิร์ฟเวอร์

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