System.Data.SqlClient.SqlException: невозможно открыть базу данных, запрошенную при входе в систему. Ошибка входа

Еще об исключении

System.Data.Entity.Core.EntityException: The underlying provider failed on Open. ---> System.Data.SqlClient.SqlException: Cannot open database "BotDb" requested by the login. The login failed.
Login failed for user 'PIXELBOT\pixelbot'.

Привет

Я сделал консольное приложение на С#, которое использует базу данных с инфраструктурой Entity.

Программа отлично работает на моем собственном компьютере, но мне нужно, чтобы программа работала 24/7, поэтому я арендовал VPS через azure.

Проблема в том, что программа не работает на VPS. VPS новый и абсолютно чистый. Единственное, что я установил, это Microsoft SQL Server 2014 LocalDB Express 64 Bit. Я получаю исключение в верхней части этого сообщения.

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

Моя строка подключения в программе, если это актуально:

    <add name="BotDb"
    connectionString="Data Source=(LocalDB)\MSSQLLocalDB;Initial Catalog=BotDb;User Id="usernameonvps";Password="passwordtovps";Integrated Security=SSPI;"
    providerName="System.Data.SqlClient" />

person sirius    schedule 27.08.2015    source источник
comment
Data Source=(LocalDB)\MSSQLLocalDB существует ли этот путь/база данных на vps? возможно, пользователи и/или пароли рассчитываются по-разному?   -  person DevilSuichiro    schedule 27.08.2015
comment
Вы пытались войти в свой локальный экземпляр SQL 2014 с помощью SSMS с учетной записью Pixelbot\pixelbot? Затем, если вы вошли, подтвердили, что можете получить доступ к каталогу «BotDB» с необходимыми разрешениями?   -  person dpimente    schedule 27.08.2015
comment
@DevilSuichiro Как мне это проверить?   -  person sirius    schedule 27.08.2015
comment
@dpimente SSMS не установлена ​​на сервере. Только локальная БД... Но думаю, можно попробовать установить..   -  person sirius    schedule 27.08.2015


Ответы (1)


Вы проверяете настройки MSSQL? Аутентификация SQL Server включена? Может быть, сервер разрешает только аутентификацию Windows.

person Andrey    schedule 27.08.2015
comment
Вы должны провести меня через это... Я не знаю ответа ни на один из вопросов, и я не знаю, где это проверить.. - person sirius; 27.08.2015
comment
Самый простой способ — установить SSMS и попытаться войти с вашими учетными данными. Если вы можете войти в систему, значит, с БД все в порядке, и вам следует искать ответ в своем коде. Если вы можете войти только с аутентификацией Windows, вы должны войти и попробовать изменить настройки в свойствах сервера sql (если у вас есть права на эту операцию). Другим вариантом быстрой проверки является изменение вашей строки подключения: ‹добавить name=BotDb connectionString=Data Source=(LocalDB)\MSSQLLocalDB;Initial Catalog=BotDb; Интегрированная безопасность = истина; providerName=System.Data.SqlClient /›. - person Andrey; 27.08.2015
comment
посмотрите здесь, как изменить режим аутентификации: msdn.microsoft.com/en-us/ библиотека/ms188670.aspx - person Andrey; 27.08.2015
comment
Итак, я установил SSMS. Я мог подключиться к базе данных, используя (localdb)\mssqllocaldb с проверкой подлинности Windows. Я не смог найти работающую комбинацию с аутентификацией SQL-сервера... Что это меня оставит? Режим аутентификации установлен на сервер SQL И аутентификация Windows. - person sirius; 27.08.2015
comment
Хорошо, проверка подлинности Windows работает. Был ли режим аутентификации установлен на SQL-сервер И аутентификацию Windows или вы сделали это? Если вы это сделали, вы перезапускаете сервер после этого? Проверьте настройки пользователя. Это должно вам помочь: msdn.microsoft.com/en-us/library/aa337562 .aspx - person Andrey; 28.08.2015
comment
В итоге, если вы все сделали правильно, у вас должна появиться возможность авторизоваться в SSMS под своим логином и паролем. - person Andrey; 28.08.2015
comment
Он уже был настроен на проверку подлинности sql и windows. Если я создаю логин sql, мне нужно изменить значение Integrated Security на false, верно? Просто чтобы быть на 100% уверенным. Мне не нужно вручную создавать BotDb, не так ли? Прямо сейчас у меня есть стандартные Master, Model, msdb и tempdb. - person sirius; 28.08.2015
comment
если вы используете аутентификацию sql, вы должны использовать свой первый вариант строки подключения со встроенной безопасностью = SSPI. Если вы можете войти в БД через SSMS с вашим логином и паролем, это должно работать для вас идеально. Что касается BotDb, это зависит от подхода, который вы используете в своем коде. если вы используете первый подход к коду, EF генерирует для вас db. Если вы используете первый подход к базе данных, вы должны создать свою базу данных вручную. - person Andrey; 28.08.2015
comment
Сначала я использую код. Мне не удалось войти в систему с помощью SSMS с использованием проверки подлинности sql, только проверка подлинности Windows. Я очень ценю ваше терпение и то, что вы тратите свое время на помощь мне. РЕДАКТИРОВАТЬ: Хорошо, я сделал новый вход в систему с правами общественности и системного администратора. Я смог войти в систему с этим пользователем с помощью SMSS. Сейчас я попробую с моей программой. - person sirius; 28.08.2015
comment
Я думаю, вы должны проверить user = usernameonvps с pasword = passwordtovps на вашем сервере sql. Хорошо, если вы создадите нового пользователя и войдете в систему, я думаю, ваша программа должна работать. - person Andrey; 28.08.2015
comment
Встроенная безопасность с веб-сайта Microsoft: при значении false в соединении указываются идентификатор пользователя и пароль. Если задано значение true, для проверки подлинности используются учетные данные текущей учетной записи Windows. Так что я попробую с ложью, я думаю - person sirius; 28.08.2015
comment
Итак, я попытался с только что созданным логином, который теперь дал мне это исключение (то же, что и первое, только с другим именем пользователя): ОШИБКА: System.Data.Entity.Core.EntityException: базовый провайдер не работает при открытии. ---› System.Data.SqlClient.SqlException: Не удается открыть базу данных BotDb, запрошенную при входе в систему. Вход не выполнен. Ошибка входа для пользователя 'SupUs'. - person sirius; 28.08.2015
comment
Вы пытаетесь сделать то же самое с Integrated security = true? - person Andrey; 28.08.2015
comment
Просто сделал. Затем мое имя пользователя и пароль просто переопределяются, и я получаю тот же старый вход в систему для пользователя «PIXELBOT\pixelbot». - person sirius; 28.08.2015
comment
Это пример строки подключения с моего ПК: ‹add name=EmployeeDBContext connectionString=server=avtomat\sqlexpress; база данных = Образец; встроенная безопасность = истина; providerName=System.Data.SqlClient/› Есть небольшая разница в этом database=Sample; может можно попробовать? - person Andrey; 28.08.2015
comment
Вероятно, я делаю что-то не так... Большое спасибо за вашу помощь. Я попытаюсь связаться со службой поддержки Azure и посмотреть, смогут ли они мне помочь. Я вернусь сюда с ответом, когда/если получу его. - person sirius; 28.08.2015
comment
Хорошо, чувак.. У меня это работает.... Я не уверен, что когда-нибудь справлюсь с этим... Проблема была в том, что у меня был нулевой инициализатор в моем классе контекста: stackoverflow.com/questions/14985854/ в любом случае.. Большое спасибо за ваше время и помощь - person sirius; 28.08.2015