Ошибка "Ошибка входа для пользователя" NT AUTHORITYIUSR " в ASP.NET и SQL Server 2008

мой ASP.NET v3.5 веб-приложение создает следующее исключение при попытке открыть соединение с базой данных SQL Server 2008:

система.Данные.В sqlclient.Sqlexception в: Не удается открыть базу данных "MyDbName" запрошено логином. Вход неудачный. Ошибка входа для пользователя ' NT ОРГАН ЗАПИСИ IUSR'.

дело в том, что я добавил NT AUTHORITYIUSR в список логинов сервера и в список пользователей базы данных. Для сервера, я предоставил пользователю публичную роль, а для базы данных я предоставил db_datareader разрешения.

Я также предоставил то же самое для NT AUTHORITYNETWORK SERVICE, под которым выполняется пул приложений.

веб-приложение размещается в IIS7, если это имеет значение. Проблема повторяется, когда БД и IIS находятся на одной физической машине.

7 ответов


фокус здесь в том, что NT AUTHORITY\NETWORK SERVICE фактически отображается в базе данных как DOMAINNAME\MACHINENAME$ (обратите внимание на $ знак!). То есть, когда вы пересекаете границу машины с вашего веб-сервера на SQL Server, SQL Server видит учетную запись машины, если вы используете NETWORK SERVICE или LOCAL SYSTEM учетные записи. Если вы используете любую другую учетную запись, не являющуюся доменной, SQL Server не получит ваши учетные данные.

Я немного озадачен вашим сообщением об ошибке. По правде говоря, я не думаю, что когда DB находится на другой коробке, вы увидите все, кроме Login Failed for NT AUTHORITY\ANONYMOUS LOGON.

IUSR используется для анонимных веб-сайтов и не может пройти по проводу к SQL Server. Вы можете найти способ, чтобы это сработало, если вы делаете все на одной машине, но я никогда не узнаю, потому что я никогда не буду делать это таким образом... ;-)


Я бы предложил создать отдельную (желательно доменную) учетную запись и указать ее в строке подключения (обычно в интернете.конфиг) Затем вы можете ограничить разрешения на веб-сервере, что эта учетная запись может и не может делать. Затем вы можете предоставить этой учетной записи необходимые разрешения в SQL server.


У меня была такая же проблема, и я решил ее, изменив пул приложений.


в случае, если это кому-то помогает, в интернете.config я добавил для этой ошибки, чтобы уйти (в разделе )


вместо Integrated Security=True; в строке подключения, просто используйте имя пользователя и пароль user=sa; pwd=mypassword;


простое решение-проверить свою сеть.файл config и убедитесь, что один из них является частью строки подключения к БД:

доверенное соединение=false

или

Интегрированная Безопасность=True


эта проблема отображается при восстановлении новой базы данных в последней базе данных.

чтобы решить эту проблему, вы должны перейти к sqlserver, затем security, а затем снова установить apppool.