Tôi muốn có thể chạy truy vấn để có được thông tin quan trọng về trạng thái của cơ sở dữ liệu. Tức là, tôi muốn truy vấn có thể cho biết cơ sở dữ liệu có ở trạng thái tốt hay không.
Đây là truy vấn mà tôi đã kế thừa cho kiểm tra này:
SELECT name AS [SuspectDB],
DATABASEPROPERTY(name, N'IsSuspect') AS [Suspect],
DATABASEPROPERTY(name, N'IsOffline') AS [Offline],
DATABASEPROPERTY(name, N'IsEmergencyMode') AS [Emergency],
has_dbaccess(name) AS [HasDBAccess]
FROM sysdatabases
WHERE (DATABASEPROPERTY(name, N'IsSuspect') = 1)
OR (DATABASEPROPERTY(name, N'IsOffline') = 1)
OR (DATABASEPROPERTY(name, N'IsEmergencyMode') = 1)
OR (has_dbaccess(name) = 0)
Nếu truy vấn đó trả về bất kỳ kết quả nào, giả định được đưa ra là cơ sở dữ liệu ở trạng thái nghi ngờ hoặc có khả năng xấu.
Có cách nào tốt hơn để làm điều này?