Не удается открыть «тест» базы данных, запрошенный при входе в систему. Ошибка входа Ошибка входа для пользователя 'xyz \ ASPNET' - PullRequest
73 голосов
/ 05 апреля 2010

Я создал веб-сервис, который сохраняет некоторые данные в БД. Но я получаю эту ошибку:

Невозможно открыть «тест» базы данных, запрошенный при входе в систему. Ошибка входа Ошибка входа для пользователя 'xyz \ ASPNET'.

Моя строка подключения

Data Source=.\SQLExpress;Initial Catalog=IFItest;Integrated Security=True

Ответы [ 20 ]

43 голосов
/ 05 апреля 2010

Ну, ошибка довольно ясна, нет? Вы пытаетесь подключиться к вашему серверу SQL с пользователем «xyz / ASPNET» - это учетная запись, под которой работает ваше приложение ASP.NET.

Этой учетной записи не разрешено подключаться к SQL Server - либо создайте имя входа на SQL Server для этой учетной записи, либо укажите другую действительную учетную запись SQL Server в строке подключения.

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

ОБНОВЛЕНИЕ: Хорошо, вы используете встроенную аутентификацию Windows -> вам нужно создать имя входа SQL Server для «xyz \ ASPNET» на вашем SQL Server - или изменить строку подключения на что-то вроде:

connectionString="Server=.\SQLExpress;Database=IFItest;User ID=xyz;pwd=top$secret"

Если в вашей базе данных есть пользователь "xyz" с паролем "top $ secret".

22 голосов
/ 05 апреля 2010
  • Либо: «xyz \ ASPNET» не является логином (в sys.server_principals)
  • Или: «xyz \ ASPNET» установлен, но не сопоставлен с пользователем в тесте базы данных (sys.database_principals)

Я бы выбрал второй вариант: сообщение об ошибке подразумевает, что база данных по умолчанию либо отсутствует, либо не имеет прав на нее, а не настроена как логин.

Чтобы проверить, настроен ли он как логин

SELECT SUSER_ID('xyz\ASPNET') -- (**not** SUSER_SID)

Если NULL

CREATE LOGIN [xyz\ASPNET] FROM WINDOWS

Если не NULL

USE test
GO
SELECT USER_ID('xyz\ASPNET')

Если NULL

USE test
GO
CREATE USER [xyz\ASPNET] FROM LOGIN [xyz\ASPNET]
8 голосов
/ 24 июня 2011

Лучшее решение проблемы входа в систему - создать пользователя входа в sqlServer. Вот шаги для создания имени входа SQL Server, использующего проверку подлинности Windows (SQL Server Management Studio):

  1. В SQL Server Management Studio откройте обозреватель объектов и разверните папку экземпляр сервера, в котором нужно создать новый логин.
  2. Щелкните правой кнопкой мыши папку «Безопасность», выберите «Новый» и нажмите «Войти».
  3. На странице Общие введите имя пользователя Windows в поле Имя для входа.
  4. Выберите проверку подлинности Windows.
  5. Нажмите ОК.

Например, если имя пользователя xyz\ASPNET, введите это имя в поле Имя пользователя.

Также вам нужно изменить отображение пользователей, чтобы разрешить доступ к базе данных, к которой вы хотите получить доступ.

7 голосов
/ 26 марта 2015

В большинстве случаев это не проблема входа в систему, а проблема создания самой базы данных. Поэтому, если при создании вашей базы данных возникнет ошибка, она не будет создана в первую очередь. В этом случае, если вы попытаетесь войти, независимо от пользователя, произойдет сбой входа. Обычно это происходит из-за логической неверной интерпретации контекста БД.

Посетите сайт в браузере и ДЕЙСТВИТЕЛЬНО прочитайте эти журналы ошибок, это может помочь вам определить проблему с вашим кодом (обычно конфликтующие логические проблемы с моделью).

В моем случае код скомпилирован нормально, та же проблема с входом в систему, когда я все еще загружал Management Studio, я просмотрел журнал ошибок, исправил ограничения контекста БД и сайт начал работать нормально ... загрузки

6 голосов
/ 14 мая 2015

У меня была эта проблема, и что для меня решило:

  • Перейти к пулам приложений в IIS
  • Щелкните правой кнопкой мыши пул приложений моего проекта
  • В разделе Модель процесса откройте Идентичность
  • Выберите опцию Пользовательский аккаунт
  • Введите имя пользователя и пароль вашего компьютера.
3 голосов
/ 28 апреля 2017

выпуск

Ошибка представляется как сообщение, подобное этому:

Невозможно открыть базу данных "ИМЯ БАЗЫ ДАННЫХ", запрошенную при входе в систему. Логин не удалось. Не удалось войти в систему для пользователя XYZ.

  • Ошибка обычно не может быть исправлена ​​простым Visual Studio или полным перезапуском компьютера.
  • Ошибка также может быть найдена как, казалось бы, заблокированный файл базы данных.

Исправление

Решение заключается в следующих шагах. Вы не потеряете данные в своей базе данных и не должны удалять файл базы данных!

Предварительное условие: у вас должна быть установлена ​​SQL Server Management Studio (Полная или Экспресс)

  1. Открыть SQL Server Management Studio
  2. В окне «Подключение к серверу» (File-> Connect Object Explorer) введите следующее:
    • Тип сервера: ядро ​​базы данных
    • Имя сервера: (localdb) \ v11.0
    • Аутентификация: [Что бы вы ни использовали, когда создавали свою локальную базу данных. Вероятно, аутентификация Windows).
  3. Нажмите «Подключиться»
  4. Разверните папку «Базы данных» в Обозревателе объектов (Вид-> Обозреватель объектов, F8)
  5. Найдите вашу базу данных. Он должен быть назван как полный путь к вашей базе данных (.mdf) файла
    • В конце имени базы данных должно появиться сообщение «(Ожидание восстановления)» или когда вы попытаетесь расширить базу данных, она не сможет, а может или не сможет выдать вам сообщение об ошибке.
    • Это проблема! Ваша база данных существенно разбилась ..
  6. Щелкните правой кнопкой мыши базу данных, затем выберите «Задачи -> Отключить ...».
  7. В окне отсоединения выберите вашу базу данных в списке и проверьте столбец с надписью «Отключить соединения»
  8. Нажмите ОК.
  9. Вы должны увидеть исчезновение базы данных из списка баз данных. Ваша проблема должна быть исправлена. Перейдите и запустите приложение, которое использует вашу локальную базу данных.
  10. После запуска приложения ваша база данных снова появится в списке баз данных - это правильно. Он больше не должен говорить «Ожидание восстановления», поскольку он должен работать правильно.

Источник решения: https://www.codeproject.com/Tips/775607/How-to-fix-LocalDB-Requested-Login-failed

3 голосов
/ 15 февраля 2018

Для меня база данных не была создана, и код EF сначала должен был создать ее, но всегда приводить к этой ошибке. Та же строка подключения работала в стандартном веб-проекте ядра aspnet. Решение было добавить

_dbContext.Database.EnsureCreated()

до первого контакта с базой данных (до заполнения базы данных).

2 голосов
/ 18 сентября 2013

Я пытался обновить пользователя, и это сработало. См. Команду ниже.

USE ComparisonData// databaseName
EXEC  sp_change_users_login @Action='update_one', @UserNamePattern='ftool',@LoginName='ftool';

Просто замените user('ftool') соответственно.

2 голосов
/ 28 июня 2016

Я использовал аутентификацию Windows для подключения к локальной базе данных .mdf файл и мой локальный сервер был sql server 2014. Моя проблема решена с помощью этой строки подключения:

string sqlString = " Data Source = (LocalDB)\\MSSQLLocalDB;" + "AttachDbFilename = F:\\.........\\myDatabase.mdf; Integrated Security = True; Connect Timeout = 30";
1 голос
/ 05 апреля 2010

Наилучшим вариантом будет использование встроенной проверки подлинности Windows, поскольку она более безопасна, чем проверка подлинности sql. Создайте нового пользователя Windows на сервере SQL с необходимыми разрешениями и измените пользователя IIS в настройках безопасности пула приложений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...