DBCC CHECKDB bắn mỗi 20 - 60 giây


13

Tôi có một môi trường dev đang nhanh chóng tiếp cận triển khai vào sản xuất và đã nhận thấy trong nhật ký cứ sau 20 giây tôi lại thấy thông báo:

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

Tôi nhận thấy điều này bởi vì những người dùng cuối đang kiểm tra điều này có một vấn đề mà tôi đã nhận ra một lỗi mà tôi nhận thấy trong Nhật ký sự kiện Windows (Nhật ký ứng dụng):

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

Tình cờ, tôi không tìm thấy tin nhắn nào liên quan nhưng được giải quyết theo chu kỳ ngoại tuyến / trực tuyến.

Điều duy nhất tôi có thể nghĩ là ứng dụng này thu thập dữ liệu cứ sau 1ms, nhưng tất cả các dữ liệu này không được chèn vào cơ sở dữ liệu. Là một máy chủ dev, nó đã được cấu hình để các bản ghi và dữ liệu trên cùng một ổ đĩa. Với hai thông tin này, tôi nghiêng về vấn đề IO này và máy chủ đang cố gắng khôi phục sau khi mất kết nối với bộ lưu trữ (SAN). Tuy nhiên, ngay cả điều này không có ý nghĩa với tôi bởi vì nó không mất tất cả các dbs, chỉ có điều này. Điều gì khác có thể gây ra điều này?

Nền tảng: SQL Server 2008 R2 (Ent.) Trên Windows Server 2008 R2 (Std.)

Câu trả lời:


22

Lý do bạn đang thấy điều này:

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

Là bởi vì bạn có tùy chọn cơ sở dữ liệu của bạn được đặt cho AutoClose.

Để tắt Tự động đóng, hãy làm điều này:

alter database YourDatabase
set auto_close off
go

Những gì AutoClosehiện đang tắt cơ sở dữ liệu sau khi quá trình người dùng cuối cùng ngắt kết nối. Và sau đó cơ sở dữ liệu sẽ tự động " mở lại " khi kết nối người dùng tiếp theo cố gắng kết nối.

Thông thường, tốt nhất là giữ AutoCloseTẮT, vì độ trễ rõ ràng để quay lại cơ sở dữ liệu. Tôi hiểu từ câu hỏi của bạn rằng đây là môi trường phát triển, nhưng bạn cũng không cần nó ở đó (và bạn chắc chắn không muốn điều đó trong môi trường sản xuất của mình).

Hơn nữa, DBCC CHECKDBkhông thực sự "bắn mỗi 20 - 60 giây" cho mỗi tiêu đề câu hỏi, nó chỉ xuất hiện theo cách đó!

Kể từ SQL Server 2005, giá trị dbi_dbccLastKnownood (nếu có) được báo cáo trong nhật ký lỗi mỗi khi cơ sở dữ liệu được khởi động. Vì vậy, bạn chỉ nhìn thấy thông tin lịch sử tương tự được trình bày nhiều lần.

Chủ đề này được đề cập trong bài viết Tại sao SQL Server chạy DBCC CHECKDB chống lại cơ sở dữ liệu của tôi tại Server Startup?

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.