Kobarin's Development Blog

C#やASP.NET、公開APIなどについての記録です。

ASP.NETからSQLserverへ接続する設定

Visual Studio 2008でASP.NET&SQLserverの開発を行った際に、デバッグモードではSQLserverに接続できるのに、IISでは接続しようとすると、以下のエラーが出た。

このログインで要求されたデータベース'MyDB' を開けません。ログインに失敗しました。ASPNET はログインできません

原因

デバッグモードでは実行ユーザ(Windowsアカウント)でアクセスするのに対して、IISの場合は「マシン名\ASPNET」でアクセスするためだ。
そして「マシン名\ASPNET」に、MyDBへのアクセス権がないためにこうした事が起こる。

解決方法

Windows認証で接続させたい場合、MyDBにユーザー「マシン名\ASPNET」からのアクセスを許可してやる必要がある。

  1. SQLserver Management Studioを開く
  2. SQL Serverインスタンス直下の[セキュリティ]-[ログイン]で、「新しいユーザー」
  3. ログイン名に「マシン名\ASPNET」、認証方法を「Windows認証」で作成
  4. [セキュリティ]-[ログイン]-[マシン名\ASPNET]のプロパティ
  5. 左側ペインの「ユーザーマッピング
  6. 「データベースロールメンバシップ」から、db_datawriter、db_datareader、publicデータベースロールをチェック。閲覧だけならpublicとdb_datareaderのみでも可。
  7. OKで完了