В моей компании есть инструмент, который отслеживает статусы на серверах, сервисах, базах данных и т. Д. Мы отслеживаем ряд локальных серверов для наших клиентов. Одна конкретная простая проверка - определить, находится ли база данных SQL Server в «хорошем» состоянии, путем запроса значения определенных свойств базы данных. Мы отслеживаем четыре свойства базы данных:
- IsSuspect
- IsOffline
- IsEmergencyMode
- IsShutdown
Это запрос, который мы используем:
SELECT name AS [SuspectDB],
DATABASEPROPERTY(name, N'IsSuspect') AS [Suspect],
DATABASEPROPERTY(name, N'IsOffline') AS [Offline],
ISNULL(DATABASEPROPERTY(name, N'IsShutdown'), 1) AS [Shutdown],
DATABASEPROPERTY(name, N'IsEmergencyMode') AS [Emergency]
FROM sysdatabases
WHERE (DATABASEPROPERTY(name, N'IsSuspect') = 1)
OR (DATABASEPROPERTY(name, N'IsOffline') = 1)
OR (ISNULL(DATABASEPROPERTY(name, N'IsShutdown'), 1) = 1)
OR (DATABASEPROPERTY(name, N'IsEmergencyMode') = 1)
При тестировании обновления до SQL Server 2008 кажется, что довольно много наших баз данных возвращают 1 (истинное) значение для свойства IsShutdown . Раньше такого не было в SQL Server 2005. Документация MSDN для свойства просто гласит: «При запуске базы данных возникла проблема».
Насколько я могу судить, базы данных в порядке. Они работают, могут быть запрошены и т. Д. Никаких проблем.
Действительно ли свойство IsShutdown действительно имеет значение для моих целей мониторинга, т. Е. Указывает ли это, что база данных находится в плохом состоянии? Или я должен просто удалить его из моего запроса?
ПРИМЕЧАНИЕ. В разговоре с одним из наших постоянных администраторов баз данных они обнаружили, что в некоторых наших новых базах данных SQL Server 2008 тот факт, что свойство IsAutoClose включено, может иметь какое-то отношение к причине эти базы данных имеют IsShutdown истины. Отключение IsAutoClose , по-видимому, "исправляет" истинное значение IsShutdown .