2009-08-13 21 views
13

SQL Server에 대한 연결을 열려고하면 ASP.NET v3.5 웹 응용 프로그램이 다음 예외를 throw합니다. 2008 데이터베이스 :ASP.NET 및 SQL Server 2008에서 'NT AUTHORITY IUSR'사용자가 로그인하지 못했습니다.

System.Data.SqlClient.SqlException : 가 로그인하여 데이터베이스 "MyDbName" 를 요청 할 수 없습니다. 로그인 이 (가) 실패했습니다. 'NT AUTHORITY \ IUSR'사용자가 로그인하지 못했습니다.

문제는 서버의 로그인 목록과 데이터베이스의 사용자 목록에 NT AUTHORITY\IUSR을 추가 한 것입니다. 서버의 경우 사용자에게 Public 역할을 부여했으며 데이터베이스에는 db_datareader 권한을 부여했습니다.

또한 응용 프로그램 풀이 실행중인 ID 인 NT AUTHORITY\NETWORK SERVICE에 대해서도 동일한 권한을 부여했습니다.

웹 응용 프로그램이 IIS7에 의해 호스팅되면 차이가 있습니다. 문제는 DB와 IIS가 동일한 실제 컴퓨터에도있을 때 발생합니다.

답변

6

여기에 속임수는 NT AUTHORITY\NETWORK SERVICE이 실제로 데이터베이스에 DOMAINNAME\MACHINENAME$으로 표시된다는 것입니다 ($에 유의하십시오!). 즉, 웹 서버에서 SQL Server로 컴퓨터 경계를 넘을 때 NETWORK SERVICE 또는 LOCAL SYSTEM 계정을 사용하면 SQL Server에 컴퓨터 계정이 표시됩니다. 도메인이 아닌 다른 계정을 사용하면 SQL Server에서 자격 증명을받지 못합니다.

오류 메시지가 약간 의아해합니다. 사실, DB가 다른 상자에있을 때, Login Failed for NT AUTHORITY\ANONYMOUS LOGON 이외의 것을 보지 않을 것이라고 나는 말합니다.

IUSR은 익명의 웹 사이트에 사용되며 SQL Server로 전달할 수 없습니다. 같은 머신에서 모든 작업을 수행하는 경우 작업 할 수있는 방법을 찾을 수는 있지만 결코 그렇게 할 수 없기 때문에 결코 알지 못할 것입니다 ... ;-)

+1

- 생산 토폴로지 가장 잘 설명되어있다 거대한. 어쨌든, 당신은 그것을 못 박았 - 난 machineName $에 대한 권한을 추가했다. 고맙습니다! –

+1

비슷한 것을 추가하고 싶습니다. IIS 6.0 웹 사이트 -> 속성 -> 디렉터리 보안 -> 편집 (인증 ...)에서 발견되는 IUSER 사용자 이름에 대한 사용 권한을 IUSR_MACHINENAME 인 사용 권한을 만들어이 문제를 해결했습니다. – shawad

+0

어떻게 MachineName $ VS –

1

별도의 (선호 도메인) 계정을 지정하고 연결 문자열 (일반적으로 web.config)에 지정하십시오. 그런 다음이 계정에서 수행 할 수있는 작업과 수행 할 수없는 작업을 웹 서버에서 제한 할 수 있습니다. 그런 다음이 계정에 SQL Server에서 필요한 사용 권한을 부여 할 수 있습니다. =

신뢰할 수있는 연결

또는

통합 보안 = 진정한 거짓

-1

간단한 해결 방법은 web.config 파일을 확인하고이 중 하나가 DB 연결 문자열의 일부입니다 있는지 확인하는 것입니다

1

나는 동일한 문제가 있었고 응용 프로그램 풀을 변경하여이를 해결했습니다.

-2

이 문제는 마지막 데이터베이스에서 새 데이터베이스를 복원 할 때 나타납니다.

이 문제를 해결하려면 sqlserver로 이동 한 다음 보안을 설정하고 apppool을 다시 설정해야합니다.

1

도움이 될 경우 web.config에 < identity impersonate = "false"/를 추가하여이 오류가 사라집니다 (< 시스템 아래).웹>)

0

대신 연결 문자열에 Integrated Security=True;를 사용하는 단지 사용자 이름 및 암호 인증을 사용 user=sa; pwd=mypassword;

난 그냥이 동일한 상자에있는 모든 작업을 것이다 있는지 확인하기 위해 테스트되었습니다
+0

아니요! 컴퓨터 계정으로 인증하는 것과 같은 다른 사용 사례가있는 경우 사용자 이름과 암호를 사용하도록 권장 할 수 없습니다. –