Я создал веб-сервис, который сохраняет некоторые данные в db. Но я получаю эту ошибку:
Невозможно открыть "тест" базы данных, запрошенный логином. Не удалось войти в систему. Не удалось войти в систему для пользователя "xyz \ ASPNET".
Моя строка подключения
Data Source=.\SQLExpress;Initial Catalog=IFItest;Integrated Security=True
c#
asp.net
sql-server
iis
web-services
coure2011
источник
источник
Ответы:
Что ж, ошибка довольно понятная, не так ли? Вы пытаетесь подключиться к своему SQL Server с помощью пользователя «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».
источник
Я бы выбрал второй вариант: сообщение об ошибке подразумевает, что база данных по умолчанию либо отсутствует, либо в ней нет прав, а не настроена как логин.
Чтобы проверить, настроен ли он как логин
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]
источник
У меня была эта проблема, и я решил ее:
источник
Лучшее решение проблемы входа в систему - создать пользователя для входа в sqlServer. Вот шаги для создания входа в SQL Server, использующего проверку подлинности Windows (SQL Server Management Studio):
Например, если имя пользователя -
xyz\ASPNET
введите это имя в поле «Имя для входа».Также вам необходимо изменить отображение пользователей, чтобы разрешить доступ к базе данных, к которой вы хотите получить доступ.
источник
В большинстве случаев это не проблема входа в систему, а проблема с созданием самой базы данных. Поэтому, если при создании вашей базы данных возникнет ошибка, она не будет создана в первую очередь. В этом случае, если вы попытаетесь войти в систему, независимо от пользователя, войти не удастся. Обычно это происходит из-за логической неверной интерпретации контекста базы данных.
Посетите сайт в браузере и ДЕЙСТВИТЕЛЬНО прочтите эти журналы ошибок, это может помочь вам определить проблему с вашим кодом (обычно это конфликтующие логические проблемы с моделью).
В моем случае код скомпилирован нормально, та же проблема со входом, пока я все еще загружал студию управления, я просмотрел журнал ошибок, исправил ограничения контекста базы данных, и сайт начал работать нормально .... тем временем студия управления все еще загружается
источник
Для меня база данных не была создана, и код EF сначала должен был ее создать, но всегда приводил к этой ошибке. Та же строка подключения работала в веб-проекте ядра aspnet по умолчанию. Решением было добавить
_dbContext.Database.EnsureCreated()
перед первым обращением к базе данных (перед заполнением БД).
источник
Проблема
Ошибка представляет собой сообщение, подобное этому:
Исправление
Решение закладывается в следующие этапы. Вы не потеряете никаких данных в своей базе данных, и вам не следует удалять файл базы данных!
Предварительные требования: у вас должна быть установлена среда SQL Server Management Studio (полная или экспресс-версия).
Источник решения: https://www.codeproject.com/Tips/775607/How-to-fix-LocalDB-Requested-Login-failed
источник
Я попытался обновить пользователя, и это сработало. См. Команду ниже.
USE ComparisonData// databaseName EXEC sp_change_users_login @Action='update_one', @UserNamePattern='ftool',@LoginName='ftool';
Просто замените
user('ftool')
соответственно.источник
Также бывает, когда вы вводите неправильное имя БД
ex : xxx-db-dev to xxx-dev-db
Иногда это просто глупая ошибка. У меня уходит больше часа, чтобы узнать это :( потому что я сначала пробую много чего сложного
источник
Это работает для меня.
Прочтите этот блог.
http://blog.sqlauthority.com/2009/08/20/sql-server-fix-error-cannot-open-database-requested-by-the-login-the-login-failed-login-failed-for- пользователь-NT-авторитет сети-сервис /
источник
Я использовал проверку подлинности Windows для подключения к файлу .mdf локальной базы данных, и моим локальным сервером был sql server 2014. Моя проблема была решена с помощью этой строки подключения:
string sqlString = " Data Source = (LocalDB)\\MSSQLLocalDB;" + "AttachDbFilename = F:\\.........\\myDatabase.mdf; Integrated Security = True; Connect Timeout = 30";
источник
В моем случае это другой вопрос. База данных перешла в однопользовательский режим, и второе подключение к базе данных показало это исключение. Чтобы решить эту проблему, выполните следующие действия.
exec sp_who2
и найдите все подключения к базе данных my_db. Завершите все соединения, выполнивKILL { session id }
где идентификатор сеанса - это SPID, указанный процедурой sp_who2.USE MASTER; EXEC sp_who2
USE MASTER; ALTER DATABASE [my_db] SET MULTI_USER GO
источник
Я не видел, чтобы об этом упоминалось в предыдущих выпусках, поэтому позвольте мне исключить другую возможность. Может быть,
IFItest
это недостижимо или просто не существует. Например, если у вас есть несколько конфигураций, каждая со своей собственной базой данных, возможно, имя базы данных не было изменено на правильное для текущей конфигурации.источник
NB: при использовании службы Windows для размещения веб-службы.
Вы должны убедиться, что ваш веб-сервис использует правильную учетную запись для входа в систему для подключения к SQL Server.
источник
Вдохновленный ответом Cyptus, я использовал
на EF6 перед первым обращением к базе данных (перед заполнением БД).
источник
Если вы не создали базу данных на своем сервере, вы получите ту же ошибку входа в систему. Убедитесь, что база данных существует, прежде чем входить в систему.
источник
Я столкнулся с этой проблемой при попытке записи в базу данных по умолчанию, предоставленную в шаблоне asp.net mvc. Это было связано с тем, что база данных еще не была создана.
Чтобы создать базу данных и убедиться, что она доступна, выполните следующие действия:
Это создаст базу данных и запустит на ней все необходимые миграции.
источник
Лучшим вариантом будет использование встроенной проверки подлинности Windows, поскольку она более безопасна, чем проверка подлинности sql. Создайте нового пользователя Windows на сервере sql с необходимыми разрешениями и измените пользователя IIS в параметрах безопасности пула приложений.
источник
Я обнаружил, что мне также пришлось установить опцию UserMapping при создании нового входа в систему, и это решило проблему для меня. Надеюсь, это поможет всем, кто тоже застрял здесь!
Изменить: установка входа в систему в качестве владельца базы данных также решила следующую проблему
источник
Иногда эта проблема может возникнуть, если вы откроете эту базу данных на другом сервере sql (например, вы запустите студию управления sql (SMS) и добавите эту базу данных) и забудете остановить этот сервер. Как результат - приложение пытается подключиться к пользователю, уже подключенному к этой базе данных на другом сервере. Чтобы исправить это, попробуйте остановить этот сервер с помощью Config. диспетчер sql server.
Мои извинения за плохой английский. С уважением, Игнат.
источник
В моем случае приложение asp.net обычно может без проблем подключаться к базе данных. Заметил такое сообщение в логах. Я включить журналы SQL сервера , и я выяснить это сообщение:
2016-10-28 10:27:10.86 Logon Login failed for user '****'. Reason: Failed to open the explicitly specified database '****'. [CLIENT: <local machine>] 2016-10-28 10:27:13.22 Server SQL Server is terminating because of a system shutdown. This is an informational message only. No user action is required.
Таким образом, кажется, что сервер перезагружался и что SQL-сервер выключился немного раньше, чем приложение ASP.NET, и база данных была недоступна в течение нескольких секунд до перезапуска сервера.
источник
Даже если вы установили логин в качестве владельца БД и установили отображение пользователей для базы данных, которая будет использовать логин, убедитесь, что фактический пользователь БД (а не только логин) имеет роль «владельца».
источник
В моем случае я запускал службу Windows под идентификатором «Система». Ошибка была:
System.Data.SqlClient.SqlException (0x80131904): Cannot open database "MyDbName" requested by the login. The login failed. Login failed for user 'MYDOMAINNAME\HOSTNAME$'.
Проблема в том, что ошибка вводит в заблуждение. Даже после того, как я добавил логин MYDOMAINNAME \ HOSTNAME $ в базу данных, предоставил этому логину доступ системному администратору и добавил пользователя для этого входа в мою целевую базу данных и сделал этого пользователя dbowner, я все еще получал ту же ошибку. Очевидно, мне нужно было сделать то же самое для входа в систему NT AUTHORITY \ SYSTEM. После этого я без проблем смог войти в систему. Я не знаю, почему сообщение об ошибке жалуется на «MYDOMAINNAME \ HOSTNAME $». Я удалил этот логин и соответствующего пользователя, и все по-прежнему работает.
источник