Ошибка "Ошибка входа для пользователя" 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.