2009-08-13 34 views
13

ASP.NET v3.5 WebアプリケーションがSQL Serverへの接続を開こうとすると、次の例外がスローされます。 2008データベース:ASP.NETとSQL Server 2008のユーザー 'NT AUTHORITY IUSR'でエラーが発生しました

System.Data.SqlClient.SqlException: が開いているデータベース "MyDbNameは" ログインで要求することはできません。ログイン が失敗しました。ユーザー 'NT AUTHORITY \ IUSR'のログインに失敗しました。

私は、サーバのログインリストとデータベースのユーザリストにNT AUTHORITY\IUSRを追加しました。サーバーの場合、ユーザーにPublicロールを付与し、データベースに対してはdb_datareaderのアクセス許可を付与しました。

NT AUTHORITY\NETWORK SERVICEについても同じことを許可しました。これは、アプリケーションプールが実行されているIDです。

ウェブアプリケーションは、違いがある場合はIIS7によってホストされます。この問題は、DBとIISが同じ物理マシン上にあるときに表示されます。

答えて

6

ここでは、NT AUTHORITY\NETWORK SERVICEDOMAINNAME\MACHINENAME$(実際には$と表示されています)というデータベースに表示されます。つまり、WebサーバーからSQL Serverへの境界を越えると、NETWORK SERVICEまたはLOCAL SYSTEMのアカウントを使用すると、SQL Serverにマシンアカウントが表示されます。他のドメイン以外のアカウントを使用すると、SQL Serverは資格情報を受け取りません。

私は少しあなたのエラーメッセージに困惑しています。真実は、私はDBが別のボックスにあるとは思わない、あなたはLogin Failed for NT AUTHORITY\ANONYMOUS LOGON以外のものが表示されます。

IUSRは匿名のWebサイトで使用され、SQL Serverに配線することはできません。あなたは同じマシンですべてをやっているなら、それを動作させる方法を見つけるかもしれませんが、私は決してそれをやっていないので絶対に分かりません... ;-)

+1

を使用し、私はちょうどそれが同じボックス上のすべての作業でしょうかどうかを確認するためにテストしていた - 生産では、トポロジーが最善と記載されています広がっている。とにかく、あなたはそれを釘付けにしました - 私はmachineName $の権限を追加しなければなりませんでした。ありがとうございました! –

+1

これを同様に追加したいだけで、IIS 6.0のWebサイト - >プロパティ - >ディレクトリセキュリティ - >編集(認証)のIUSR_MACHINENAMEにあるIUSERユーザーのアクセス許可を作成してこの問題を解決しました。 – shawad

+0

MachineName $ in VS –

1

私は、別の(好ましくはドメイン)アカウントを使用し、接続文字列(通常はweb.config)に指定してください。 その後、Webサーバー上のこのアカウントの権限を制限できます。 このアカウントには、SQLサーバーに必要なアクセス許可を与えることができます。 =

信頼できる接続

OR

統合セキュリティ= Trueの偽:

-1

簡単な解決策は、web.configファイルをチェックし、これらのいずれかが、データベースの接続文字列の一部であることを確認することです

1

私は同じ問題を抱えており、アプリケーションプールを変更することでこれを解決しました。

-2

この問題は、最後のデータベースで新しいデータベースを復元するときに表示されます。

これを解決するには、sqlserverにアクセスし、セキュリティを設定してから、再度アプリケーションプールを設定する必要があります。

1

web.configで誰かを助ける場合は、< identity impersonate = "false" />をこのエラーがなくなるまで(<システムの下に)追加しました。ウェブ>)

0

代わりの接続文字列でIntegrated Security=True;を使用して、単にユーザ名とパスワードの認証user=sa; pwd=mypassword;

+0

いいえ!マシンアカウントで認証するなど、さまざまなユースケースがある場合は、ユーザー名とパスワードを使用することをおすすめできません。 –

関連する問題