Ошибка "Ошибка входа для пользователя" NT AUTHORITY\IUSR "в ASP.NET и SQL Server 2008
В моем веб-приложении ASP.NET v3.5 возникает следующее исключение, когда он пытается открыть соединение с базой данных SQL Server 2008:
System.Data.SqlClient.SqlException: Не удается открыть базу данных "MyDbName" запрошенный логином. Вход не смогли. Ошибка входа для пользователя NT AUTHORITY\IUSR".
Дело в том, что я добавил NT AUTHORITY\IUSR
в список серверов для входа в систему и список пользователей в базе данных. Для сервера я предоставил пользователю роль Public, а для базы данных я предоставил разрешения db_datareader
.
Я также предоставил то же самое для NT AUTHORITY\NETWORK SERVICE
, который является идентификатором, с которым работает пул приложений.
Веб-приложение размещено в IIS7, если это имеет значение. Проблема повторяется, когда DB и IIS находятся на одной и той же физической машине.
Ответы
Ответ 1
Фокус в том, что NT AUTHORITY\NETWORK SERVICE
фактически появляется в базе данных как DOMAINNAME\MACHINENAME$
(обратите внимание на знак $
!). То есть, когда вы переходите границу машины с вашего веб-сервера на SQL Server, SQL Server видит учетную запись компьютера, если вы используете учетные записи NETWORK SERVICE
или LOCAL SYSTEM
. Если вы используете любую другую учетную запись, отличную от домена, SQL Server не получит ваши учетные данные.
Я немного озадачен вашим сообщением об ошибке. По правде говоря, я не думаю, что когда БД находится в другом окне, вы увидите что-нибудь кроме Login Failed for NT AUTHORITY\ANONYMOUS LOGON
.
IUSR
используется для анонимных веб-сайтов и не может передавать провод на SQL Server. Вы можете найти способ работать, если вы делаете все на одной машине, но я никогда не узнаю, потому что я никогда не буду так делать...; -)
Ответ 2
Я бы предложил создать отдельную (желательно доменную) учетную запись и указать ее в строке подключения (обычно в web.config)
Затем вы можете ограничить разрешения на веб-сервере, что эта учетная запись может и не может сделать.
Затем вы можете предоставить этой учетной записи необходимые разрешения на сервере SQL.
Ответ 3
У меня была такая же проблема и я решил эту проблему, изменив пул приложений.
Ответ 4
В случае, если это помогает кому-то, в web.config я добавил < identity impersonate = "false" /" > , чтобы эта ошибка ушла (под < system. web > )
Ответ 5
Вместо использования Integrated Security=True;
в строке подключения просто используйте аутентификацию имени пользователя и пароля user=sa; pwd=mypassword;
Ответ 6
Простое решение - проверить файл web.config и убедиться, что один из них является частью строки подключения db:
Доверенное соединение = false
ИЛИ
Интегрированная безопасность = True
Ответ 7
Эта проблема отображается при восстановлении новой базы данных в вашей последней базе данных.
Чтобы решить эту проблему, вы должны перейти в sqlserver, затем в систему безопасности, а затем снова установить свой Apppool.