На выходных мой сервер Dev столкнулся с очень интересной проблемой. У меня есть сценарии, которые периодически отключают несколько баз данных, а затем снова переводят их в оперативный режим. Они запустились и перевели все указанные базы данных в автономный режим, но затем не смогли снова их подключить, указанное сообщение об ошибке было:
Сообщение 5011, Уровень 14, Состояние 7, Строка 4 У пользователя нет разрешение на изменение базы данных «XXX», база данных не существует или база данных не находится в состоянии, которое позволяет проверять доступ. Сообщение 5069, Уровень 16, Состояние 1, Строка 4: оператор ALTER DATABASE не выполнен.
Мне это не подходит, поскольку мы запускаемся из учетной записи пользователя, для которой установлены следующие свойства:
![enter image description here](https://i.stack.imgur.com/ZqAA8.png)
Я также подтвердил, что это не проблема с разрешениями, войдя на этот сервер, запустив SSMS в качестве администратора и войдя в систему с помощью моего windows учетные данные (также учетная запись администратора) и выполнение следующего SQL в автономной базе данных:
USE [master]
GO
ALTER DATABASE [XXX] SET ONLINE
GO
с теми же результатами ...
Я смотрел на SQL регистрирует более подробную информацию об указанной ошибке c, однако нет записей, связанных с этой проблемой. Я могу воспроизвести эту проблему на каждой базе данных на этом конкретном сервере. Единственный способ получить доступ к базам данных через Интернет - это отсоединить и снова присоединить их.
Большинство других билетов переполнения стека, связанных с этим сообщением об ошибке, задают c для одной базы данных или специфицируют c учетная запись пользователя. Моя проблема охватывает все базы данных и всех пользователей-администраторов, которых я пробовал до сих пор, а также моя проблема возникла со сценарием, который ранее хорошо работал на этом сервере и в учетной записи, очевидно, что в выходные дни что-то изменилось, что приводит к сбою этого запроса. Интересно, сталкивался ли кто-нибудь еще с этой проблемой раньше?
Обновление 1
В этом посте рассказывается о том, как защита файлов может вызвать это сообщение об ошибке, я предоставил полный доступ к группа пользователей в одной из баз данных, а затем повторно введите онлайн-команду, не повезло. Сервер My SQL работает под учетной записью службы, которая входит в группу пользователей «Администратор» и имеет полный доступ ко всем файлам базы данных.
Обновление 2
Все виды интересных идей выдвигается здесь , также обсуждается здесь . Множество команд и идей о том, как восстановить поврежденные базы данных с помощью нескольких комбинаций восстановления, таких как команда SQL, к сожалению, ни одна из них не работает в моей ситуации, они либо не будут работать в автономных базах данных, либо после отсоединения и присоединения не сообщают любые ошибки. Конечно, всегда есть ряд сообщений, в которых просто утверждается, что решение основано на разрешениях и работает: GRANT ALTER ON DATABASE решит все проблемы. Для моей учетной записи администратора это не должно иметь значения, но это спорный вопрос, поскольку я даже не могу запустить эту команду в автономной базе данных ...