#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 в качестве базы данных по умолчанию.