「schoolPool」というアプリケーションプールを作成し、それをWebアプリケーションに割り当てました。このプールのIDはLocalSystemに設定されています。アプリケーション内からデータベースにアクセスしようとすると、つまりSQL接続を開くと、常に次のエラーが表示されます。
Login failed for user 'NT AUTHORITY\SYSTEM'
NT AUTHORITY/SYSTEMをSSMS(SQL Server Management Studio)ログインに追加しようとしましたが、すでにプリンシパルであり、次のエラーが表示されました。
アプリケーションプールのID(Windows 8.1のIIS)をLocalSystem、LocalService、NetworkService、およびApplicationPoolIdentityに変更して、アプリケーション設定を大幅に調整しました。しかし、それらはすべて、データベースにログインしていた問題を解決できませんでした。
最後に LocalSystemにプールIDを設定し、それが "NT AUTHRITY\SYSTEM"がデータベースへの接続を開くことを妨げる理由を考えました。 「管理者」としてSQL Server Management Studioを開き、 サーバーの役割 「ログイン」セクションのNT AUTHORITY\SYSTEMの場合。このユーザーのデフォルトのサーバーロールは、デフォルトでpublicでした。 Sysadminもチェックしました Webアプリケーションフォームを更新しました。今回はうまくいきました!すべてが完全に動作するようになりました。
NT AUTHORITY/SYSTEMにsysadminとしての役割を許可します。
「NT SERVICE\MSSQLSERVER」をsysadminに割り当てる次のクエリを再実行します
EXEC master..sp_addsrvrolemember @loginame = N'NT SERVICE\MSSQLSERVER', @rolename = N'sysadmin'
システム管理者を付与するというMusakkhirの答えは、セキュリティに関する限り、十分に考えられていないようです。私は単に「パブリック」権限を付与することで自分でそれを「解決」しました。ログインエラーが解消され、エラーログのフラッディングが停止すると、ログインするようになりますが、接続を実行している不明なプロセスは何もできません。