Не удается открыть базу данных «dbname», запрошенную логином. Ошибка входа в систему. Ошибка входа для пользователя «machinnameusername»

#c# #sql-server

#c# #sql-server

Вопрос:

Я пытаюсь запустить консольное приложение, написанное на C #, с использованием visual Studio 2010, в котором я обращаюсь к временной базе данных Microsoft Sql Server Managment Studio.

Но приложение выдает исключение следующим образом:

 "Cannot open database "dbname" requested by the login. The login failed. Login failed for user `machinnameusername""
  

И моя строка подключения выглядит следующим образом:

 con.ConnectionString = @"Data Source=.SQLEXPRESS;Initial Catalog=temp;Integrated Security=True";
  

Почему это может привести к сбою с такой ошибкой?

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

1. «Пожалуйста, помогите как можно скорее» — Пожалуйста, проверьте свой тон. Никто здесь не обязан вам помогать.

2. похоже, ваша база данных использует аутентификацию SQL…

Ответ №1:

Пользователь, под которым запущено приложение (вероятно, вы, поскольку это консольное приложение), не имеет прав входа в базу данных.

Integrated Security=True указывает, что используется проверка подлинности Windows — либо используйте пользователя, имеющего соответствующие разрешения для базы данных, либо предоставьте соответствующие разрешения пользователю.

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

1. Как мне предоставить разрешение пользователю?

2. @user693730 — Вам нужны права администратора в базе данных. Используйте Sql Server Management Studio — в области управления вы можете добавлять пользователей, логины и устанавливать правильные права доступа.

3. Поскольку я новичок в Sql Server Management Studio, я не могу найти область управления

Ответ №2:

Если вы измените строку подключения, чтобы использовать имя пользователя и пароль sql server, которые могут быть связаны с базой данных, то это сработает, если приложение не запущено под идентификатором Windows, который не связан с аутентификацией sql server Windows

 Data Source=.SQLEXPRESS;Initial Catalog=temp;Persist Security Info=True;User ID=<username>;Password=<pw>"
  

приложение запущено под именем пользователя, который не распознан в sql server

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

1. «Правильный» означает логин Sql. 🙂

2. ну да, если быть строго корректным, тогда да, фактический логин sql server, lol

3. Моя ошибка заключалась просто в том, что Sql имеет два режима аутентификации, ни один из которых не является более или менее правильным, чем другой. 🙂

4. Появилось новое исключение как «Ошибка входа в систему для пользователя ‘username'».

5. имя пользователя и пароль, которые вы добавляете при подключении, должны быть действительным именем пользователя sql server, которое также имеет правильные права на выполнение в базе данных