19

私の ASP.NET v3.5 Web アプリケーションは、SQL Server 2008 データベースへの接続を開こうとすると、次の例外をスローします。

System.Data.SqlClient.SqlException: ログインによって要求されたデータベース "MyDbName" を開けません。ログインに失敗しました。ユーザー 'NT AUTHORITY\IUSR' のログインに失敗しました。

NT AUTHORITY\IUSR問題は、サーバーのログイン リストとデータベースのユーザー リストに追加したことです。サーバーについては、ユーザーにパブリック ロールを付与し、データベースについてはdb_datareaderアクセス許可を付与しました。

NT AUTHORITY\NETWORK SERVICEアプリケーション プールが実行されている ID である にも同じ権限を付与しました。

それが違いを生む場合、Web アプリケーションは IIS7 によってホストされます。DB と IIS が同じ物理マシン上にある場合にも、問題が再現されます。

4

8 に答える 8

10

ここでの秘訣は、NT AUTHORITY\NETWORK SERVICE実際にはデータベースに次のように表示されることです(記号DOMAINNAME\MACHINENAME$に注意してください!)。$つまり、WebサーバーからSQL Serverにマシンの境界を越えると、NETWORK SERVICEまたはLOCAL SYSTEMアカウントを使用している場合、SQLServerはマシンアカウントを認識します。他の非ドメインアカウントを使用する場合、SQLServerは資格情報を受け取りません。

私はあなたのエラーメッセージに少し戸惑っています。正直なところ、DBが別のボックスにある場合、以外のものは表示されないと思いますLogin Failed for NT AUTHORITY\ANONYMOUS LOGON

IUSR匿名のWebサイトに使用され、SQLServerにネットワークを通過させることはできません。同じマシンですべてを実行している場合は、それが機能する方法を見つけることができますが、私はそのように実行することは決してないので、私にはわかりません... ;-)

于 2009-08-13T02:56:58.640 に答える
5

それが誰かを助ける場合に備えて、web.config<identity impersonate="false" />でこのエラーが消えるように追加しました(下<system.web>

于 2015-01-06T05:33:02.200 に答える
2

別の (できればドメイン) アカウントを作成し、接続文字列 (通常は web.config) で指定することをお勧めします。次に、このアカウントができることとできないことを Web サーバーで制限できます。次に、このアカウントに SQL サーバーで必要な権限を付与できます。

于 2009-08-13T07:27:58.567 に答える
0

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

于 2015-07-22T08:00:30.353 に答える
0

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

于 2014-04-16T07:40:35.660 に答える
-1

この問題は、最後のデータベースに新しいデータベースを復元するときに発生します。

これを解決するには、sqlserver、次にセキュリティに移動してから、apppool を再度設定する必要があります。

于 2014-05-17T10:26:23.560 に答える
-1

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

信頼できる接続 = false

また

統合セキュリティ=True

于 2011-10-18T06:26:35.713 に答える