Вот странная ситуация, с которой мы столкнулись при отказе зеркального отображения базы данных SQL Server 2008.
У нас есть пара зеркальных баз данных, работающих в режиме высокой доступности, и основная и зеркальная базы данных отображаются как синхронизированные. В рамках обслуживания я инициировал ручное переключение основного сервера на зеркало. Однако после аварийного переключения принципал теперь находился в однопользовательском режиме вместо ожидаемого состояния «Принципал / синхронизирован», которое мы обычно получаем. До того, как это произошло, база данных находилась в многопользовательском режиме на предыдущем сервере. В конечном итоге мы остановили все приложения, перезапустили экземпляры SQL Server и выполнили команду «ALTER DATABASE ... SET MULTI_USER», чтобы вернуть базу данных в ожидаемое состояние «Принципал / синхронизирован» в многопользовательском режиме.
Вопрос.
Кто-нибудь знает, где SQL Server хранит информацию о том, должна ли база данных находиться в однопользовательском режиме или нет? Мне интересно, есть ли какая-то системная база данных или таблица, в которой где-то записан этот параметр. В частности, однажды у нас был инцидент с базой данных на исходном принципе (той, на которую я переключался), когда при попытке отсоединения базы данных она была переведена в однопользовательский режим. Мне интересно, хранится ли где-то в кэше этот параметр и является ли причиной того, что SQL Server вернул его в однопользовательский режим после аварийного переключения.
Представление базы данных для определения того, является ли база данных однопользовательской или многопользовательской, для SQL Server 2005 или более поздней версии - sys.databases - это столбец user_access_desc.