DBCC CHECKDB menembak setiap 20 - 60 detik

13

Saya memiliki lingkungan pengembang yang dengan cepat mendekati penyebaran ke dalam produksi dan telah memperhatikan dalam log yang kira-kira setiap 20 detik saya melihat pesan:

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

Saya perhatikan ini karena pengguna akhir yang menguji ini memiliki masalah yang saya isolasi untuk kesalahan yang saya perhatikan di Windows Event Log (Log Aplikasi):

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

Kebetulan, saya tidak menemukan pesan terkait tetapi diselesaikan dengan siklus offline / online.

Satu-satunya hal yang dapat saya pikirkan adalah bahwa aplikasi ini mengumpulkan data setiap 1 ms, tetapi semua data ini tidak dimasukkan ke dalam basis data. Menjadi server dev, itu dikonfigurasi sehingga log dan data berada di drive yang sama. Dengan mengingat dua informasi ini, saya condong ke arah ini sebagai masalah IO dan server berusaha memulihkan dari kehilangan koneksi ke penyimpanannya (SAN). Namun bahkan ini tidak masuk akal bagi saya karena tidak kehilangan semua dbs, hanya yang ini. Apa lagi yang menyebabkan ini?

Platform: SQL Server 2008 R2 (Ent.) Pada Windows Server 2008 R2 (Std.)

swasheck
sumber

Jawaban:

22

Alasan Anda melihat ini:

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

Apakah karena Anda mengatur opsi basis data Anda AutoClose.

Untuk mematikan Penutupan Otomatis, lakukan ini:

alter database YourDatabase
set auto_close off
go

Apa yang AutoClosedilakukan adalah mematikan basis data setelah proses pengguna terakhir terputus. Dan kemudian basis data secara otomatis " dibuka kembali " ketika koneksi pengguna berikutnya mencoba untuk terhubung.

Biasanya ini adalah praktik terbaik untuk tetap AutoCloseMATI, karena latensi yang jelas untuk memutar kembali basis data. Saya mengerti dari pertanyaan Anda bahwa ini adalah lingkungan pengembangan, tetapi Anda tidak seharusnya membutuhkannya di sana (dan Anda tentu tidak menginginkannya di lingkungan produksi Anda).

Lebih jauh lagi DBCC CHECKDBsebenarnya bukan "menembak setiap 20 - 60 detik" per judul pertanyaan, hanya muncul seperti itu!

Sejak SQL Server 2005 nilai dbi_dbccLastKnownGood (jika ada) dilaporkan dalam log kesalahan setiap kali database dimulai. Jadi, Anda hanya melihat informasi historis yang sama yang disajikan berulang kali.

Topik ini dicakup dalam artikel Mengapa SQL Server menjalankan DBCC CHECKDB terhadap database saya di Server Startup?

Thomas Stringer
sumber