ADO.NET Не удается подключиться к БД MS SQL Server

493
23 июля 2017, 08:23

Есть БД, в консольном приложении C# пытаюсь плодключиться к БД и считать содержимое таблицы следующим образом:

string cs= @"Data Source=.\SQLEXPRESS;Initial Catalog=ShopDB;Integrated Security=True;";
string command = "SELECT * FROM Customers";                                        
DataTable customers = new DataTable();
using (SqlConnection connection = new SqlConnection(cs))
{
    connection.Open();
    SqlCommand cmd = new SqlCommand(command, connection);
    SqlDataReader dr = cmd.ExecuteReader();
    customers.Load(dr);
    dr.Close();
}

При попытке открытия соединения получаю ошибку

System.Data.SqlClient.SqlException: 'Cannot open database "ShopDB" requested by the login. The login failed.
Login failed for user 'MicrosoftAccount\mail@yahoo.com'.'

Использую БД MS SQL Server Express 2016, ОС Windows 10, VS 2017. В БД Метод аутентификации выбран Windows Authentication. При попытке указать в строке подключения имя пользователя, которое отображается при подключении к БД (в неактивных полях) и пароль, который соответствует этому пользователю, появляется ошибка

System.Data.SqlClient.SqlException: 'Login failed for user 'DESCTOP-5HGPGMV\username'.'

Подскажите, пожалуйста, в чем ошибка.

Answer 1

В вашей строке подключения фигурирует Integrated Security=True. Это означает, что для подключения к SQL серверу будет использоваться логин пользователя, из-под которого запущена программа. Например, если программу запустит пользователь mydomain\Ivanov, то для подключения к MS SQL серверу будет использоваться логин mydomain\Ivanov, а если программу запустит mydomain\Petrov - то логин mydomain\Ivanov.

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

Логин и пароль в строке подключения для этого режима вводить не надо!

Просто запустите sql server management studio и в Security - Logins убедитесь, что пользователь DESCTOP-5HGPGMV\username есть в списке плюс имеет достаточные права к БД вашего приложения.

Альтернативно, вы можете убрать Integrated security и вот тогда вам будет необходимо указать и логин и пароль от какой-либо учётки SQL Server.

Для общего понимания можете почитать вот эти вопросы на so:

  • Подключение к SQL Server на C# для чайника
READ ALSO
Уведомления в Asp.net от WebAPI

Уведомления в Asp.net от WebAPI

Есть ситуация: фронт-энд делает запрос на бэк

314
Архитектура классов

Архитектура классов

Есть примерно следующая инфраструктура классов:

384