2016-05-11 8 views
2

Итак, мне удалось почти закончить все мои проблемы. Но теперь я общаюсь с другим. Я использовал этот ConnectionString:Ошибка входа в систему пользователя и не удается открыть базу данных «Database1.mdf», запрошенную при входе в систему. Ошибка входа в систему. Ошибка входа в систему для пользователя «rBcollo-PC rBcollo»

SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;Database=Database1.mdf"); 

И бросает следующую ошибку:

Login failed for user '

Если я удалить расширение на .mdf он бросает ту же ошибку

Теперь, если я буду добавьте следующее в строку:

Integrated Security = true 

Он бросает это:

Cannot open database "Database1.mdf" requested by the login. The login failed. Login failed for user 'rBcollo-PC\rBcollo'.

P.S для интегрированной безопасности = ложному он кидает «Войти потерпело неудачу для потребителя '»

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

Любая помощь, пожалуйста?

+0

«Проблема в том, что я не использую ни одно имя пользователя или пароль для базы данных» Можете ли вы объяснить это больше? SQL _requires_, либо через учетную запись Windows, либо имя/пароль пользователя SQL. Вы говорите, что не используете имя пользователя _now_ или вы не _want_? –

+0

@DStanley [ссылка] (http://i.imgur.com/U3FlfY8.png) Это фотография расширенных настроек базы данных. И поля имени пользователя и пароля пусты. Не означает ли это, что я не использую какое-либо имя пользователя или пароль для базы данных? –

ответ

4

Примечание: Мой ответ был бы применим, если вы используете EntityFramework Core с SQL Server

Эта ошибка может быть по причине, «Database does not exist» и приложения пытаются выполнять операции БД.

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

_context.Database.EnsureCreated(); 

И что такое EnsureCreated?

// Summary: 
    //  Ensures that the database for the context exists. If it exists, no action is 
    //  taken. If it does not exist then the database and all its schema are created. 
    //  If the database exists, then no effort is made to ensure it is compatible with 
    //  the model for this context. 
    //  Note that this API does not use migrations to create the database. In addition, 
    //  the database that is created cannot be later updated using migrations. If you 
    //  are targeting a relational database and using migrations, you can use the DbContext.Database.Migrate() 
    //  method to ensure the database is created and all migrations are applied. 
    // 
    // Returns: 
    //  True if the database is created, false if it already existed. 
0

, как только вы используете встроенную защиту = true, он использует ваши учетные данные Windows для входа в экземпляр sql. вы должны предоставить этому пользователю разрешения для экземпляра sql. если вы не укажете интегрированную security = true, то ее вход в систему как анонимный пользователь, и именно поэтому Login failed для пользователя «.». вы можете использовать третий вариант создания учетной записи sql, а затем передать их в строку подключения и логин. зависит от того, что вы хотите сделать.

1

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

Если вы установили Integrated Security = false или вообще не имеете встроенной функции безопасности, вам необходимо указать имя пользователя и пароль.

Data Source=.\SQLEXPRESS;Database=Database1.mdf;User Id=myUsername; 
Password=myPassword; 

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

+0

Изображение -> [ссылка] (http://i.imgur.com/U3FlfY8.png) Ну. Я не вижу ни одного имени пользователя или пароля, связанного с моей базой данных. –

+1

В SQL Management Studio расширяйте свою базу данных -> Безопасность и вы должен увидеть список пользователей. – CathalMF

+0

Im довольно уверен, что у меня нет этого установленного на моем компьютере. И мне нужно подключить базу данных, используя только настройки/ссылки по умолчанию и т. Д. Это означает, что для SQL Management Studio нет никаких SQL-сервисов или других видов SQL-сервисов, а те, которые C# 2010 уже есть –

1

На это не ответил, поэтому я думал, что перечислил свое предложение, похоже, присутствует и в VS Community 2015, запустите VS в качестве администратора и, похоже, устраните проблему.

Несмотря на то, что база данных была создана в визуальной студии, работающей под моей учетной записью, и веб-службы работают под моей учетной записью, похоже, не могут обращаться к базе данных без администратора.

Возможно, кто-то может ответить, почему это требуется, просто знать, что администратор необходим для того, чтобы многие функции VS работали корректно, а не уверен, почему его не включили в первую очередь.

Очень раздражает только использование локальной базы данных разработчиков .. должно просто работать без этой ворчащей и дезинформации.

0

Если вы используете netcore, не забудьте запустить dotnet ef database update в каталоге проекта. Я получал ту же ошибку и исправил ее для меня.