Почему не удается войти в восстановленную базу данных SQL Server 2012?

#sql-server #windows-authentication

#sql-server #windows-проверка подлинности

Вопрос:

В рамках усилий по разработке службы Windows я восстановил производственную базу данных в тестовую базу данных на том же экземпляре SQL Server и могу получить доступ к тестовой базе данных через SSMS. Я передал роль db_owner в базе данных двум другим пользователям, которые не могут войти в систему, оба получают ошибку SQL

Ошибка: 18456, серьезность: 14, состояние: 38.
Логин действителен, но база данных недоступна (или вход не разрешен)

Вот основное сообщение, в котором в качестве проблемы упоминается соответствующая база данных.

Ошибка входа для пользователя ‘NT AUTHORITY SYSTEM’. Причина: Не удалось открыть явно указанную базу данных ‘MedFile_TestDataServer’. [КЛИЕНТ: ]

База данных не находится в состоянии «Восстановление».

Первый пользователь является NT AuthoritySystem , а второй — пользователем Windows. Оба учетных данных используются для запуска службы Windows, которая обращается к базе данных в режиме обновления, системный пользователь с того же сервера, пользователь Windows из VS2013, запускающий службу как командную программу на моем рабочем столе. Оба могут получить доступ к другим копиям этой же базы данных, просто изменив имя базы данных, поэтому не думайте, что проблема со строкой подключения. Я сравнил все свойства в базах данных, которые работают и не работают, и не вижу различий, кроме имен файлов, и у этих двух логинов меньше разрешений для баз данных, к которым они могут получить доступ.

Похоже, что эта база данных остается недоступной после восстановления, но я не могу найти такого свойства, установленного в базе данных, и я могу получить доступ через SSMS. Я перезапустил сервер, содержащий также базу данных ergo SQL Server.

Я также попытался запустить службу от имени администратора базы данных и получаю ту же ошибку, хотя этот пользователь нормально обращается к базе данных через SSMS.

Есть ли что-нибудь, что может сделать базу данных «недоступной»?

Это часть разработки программного обеспечения для службы Windows, пытающейся использовать тестовую базу данных. Я использую как EF 6.02, так и последнюю ADO.NET также версия.

Комментарии:

1. Может ли пользователь Windows получить доступ к восстановленной базе данных через SSMS?

2. Вы проверяли, привязан ли пользователь базы данных к логину сервера (т. Е. Потерянные пользователи)?

3. @Dave — пользователи базы данных показывают, что они сопоставлены с одним и тем же именем входа.

4. @Sujay — да, я могу войти на сервер, запустить SSMS и получить доступ к этой базе данных просто отлично.

5. Почему было подано два голоса за закрытие этого вопроса? Недостаточно сложный вопрос для полиции или я сделал какой-то другой ложный paux? Допустимые вопросы включают в себя — программные средства, обычно используемые программистами; и является практической, разрешимой проблемой, уникальной для разработки программного обеспечения

Ответ №1:

Проверьте, установлено ли в вашей базе данных свойство «Auto Close» в значение «True». Если да, измените его на «False».

Вы можете увидеть это в SSMS: щелкните правой кнопкой мыши на базе данных — Свойства — Параметры.

Комментарии:

1. Спасибо, но для автоматического закрытия было установлено значение false.

2. Это просто спасло меня от работы с базой данных SQL Express, которая отказывалась от AJAX-соединения после выполнения сложных запросов для обслуживания страницы в IIS.

Ответ №2:

можете ли вы проверить, какая база данных используется по умолчанию для этих двух пользователей?

Если вы (случайно / намеренно) установили базу данных по умолчанию для пользователя, входящего в систему SQL Server, и у пользователя нет прав доступа к базе данных, вы получите это сообщение об ошибке.

Комментарии:

1. У обоих были другие значения по умолчанию db, поэтому установите их на эту базу данных, но никакой помощи. Вот основное сообщение, в котором в качестве проблемы упоминается соответствующая база данных. «Не удалось войти в систему для пользователя ‘NT AUTHORITY SYSTEM’. Причина: Не удалось открыть явно указанную базу данных ‘MedFile_TestDataServer’. [КЛИЕНТ: <локальный компьютер>]»

2. Можете ли вы попробовать установить для них ОСНОВНУЮ базу данных по умолчанию?

3. У системного пользователя по умолчанию был установлен Master. Что хорошего это даст в любом случае, поскольку ошибка не распространяется на эту базу данных?

4. Черт возьми, у всех пользователей теперь есть master в качестве базы данных по умолчанию.