Я разрабатываю веб-приложение ASP.NET MVC3, которое подключается к базе данных SQL Server 2008 R2.
Все работало нормально, пока я не начал получать эту ошибку:
The database myDb is not accessible. (ObjectExplorer)
Эта проблема появляется также, когда я пытаюсь просмотреть базу данных в SQL Server Management Studio. Кажется, я как-то потерял разрешение на доступ к своей базе данных? Я прекрасно могу просматривать другие базы данных.
Я использую смешанный режим аутентификации (до сих пор проверка подлинности Windows работала нормально). Если я войду как sa
Я получаю ту же ошибку.
Как я могу вернуть необходимые разрешения моей учетной записи, если я не могу получить доступ к базе данных?
Что в первую очередь могло вызвать это?
Единственные изменения, которые я сделал недавно, вообще не были связаны с базой данных, я изо всех сил пытаюсь понять, что это вызвало.
Обновить Что ж, после перезагрузки компьютера все снова заработало: / Я ничего не менял, ответы здесь еще не читал. Очень странно!
В прошлом я обнаружил, что это было из-за того, что владелец БД был invild, как будто он был удален из экземпляра SQL.
Попробуйте это из окна запроса:
use <database with issue>;
exec sp_changedbowner 'sa';
Затем он должен позволить вам просматривать БД в проводнике SSMS.
Если вы не используете аутентификацию в смешанном режиме, выведите «sa» с учетной записью домена, предпочтительно той, которая служит учетной записью службы с правами SA.
Обновить Что ж, после перезагрузки компьютера все снова заработало: / Я ничего не менял, ответы здесь еще не прочитал. Очень странно!
В принятом ответе написано, что все заработало после перезагрузки, но почему?
Это случилось со мной после того, как я попытался обновить базу данных с помощью SSDT (плагин Visual Studio), и скрипт завершился ошибкой. Тогда мне не удалось получить доступ к базе данных даже из SSMS (Management Studio). Рядом с моей записью в базе данных было указано «(Single User)», что указывало на проблему.
Сценарий установил базу данных в режим SINGLE_USER и внезапно завершил работу, прежде чем вернуть ее в MULTI_USER. После этого база данных считала, что пользователь SSDT все еще активен, и не разрешал никаких других подключений. Перезагрузка очистила это соединение (возможно, цикл службы SQL Server тоже сделал бы это), что позволило мне восстановить соединение.
Оттуда я мог вернуть базу данных в режим MULTI_USER, используя свойства БД (Параметры -> Состояние -> Ограничить доступ), но вместо этого я запустил SSDT из другой исходной ветки, которая завершилась, сбросив режим.
Похоже на очень общее сообщение об ошибке. Попробуйте запустить приведенное ниже от пользователя, прошедшего проверку подлинности Windows, и посмотрите, получите ли вы какие-либо результаты.
EXEC sp_change_users_login 'report'
Если да, то бегите ниже.
EXEC sp_change_users_login 'auto_fix', 'username_from_above'
Если это не поможет, попробуем откопать что-нибудь еще.