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

ASP.NET Webアプリケーションから、SQL Server 2005のデータベースに接続するアプリケーションにおいて、接続の際に次のエラーメッセージが表示された。
このログインで要求されたデータベースXXX を開けません。ログインに失敗しました。 ASPNET はログインできません

接続文字列は下記のとおりで、Windows認証で接続する方法である。

エラーの原因は、ASP.NETランタイムを実行しているユーザー「マシン名\ASPNET」に、TestDBデータベースへのアクセス権がないためである。解決方法には、接続文字列にユーザーとパスワードを追加しSQL Server認証で接続させる方法もあるが、ここでは接続文字列はそのままでWindows認証を使う方法を示す。つまり、SQL Serverにログインユーザに、Windowsアカウントのひとつである「マシン名\ASPNET」を追加し、TestDBへのアクセスを可能にするのである。

まず、「マシン名\ASPNET」がSQL Serverのログインできるように、ログインユーザを作る。
手順は、Management StudioでSQL Serverのインスタンスを表示し、[セキュリティ]-[ログイン]で新しいユーザを選ぶ。
ログイン名:マシン名\ASPNET
認証方法:Windows認証
次に、このマシン名\ASPNETに、TestDBへのアクセス権を与える。
手順は、「マシン名\ASPNET」ログインユーザーのプロパティで表示し、左側ペインからユーザーマッピングを選ぶ。

画面下部のデータベースロールメンバシップから、db_datawriter,db_datareader,publicデータベースロールをチェックする。
この設定によって、読み取り、書き込み権限を「マシン名\ASPNET」に与えたことになる。
OKボタンを押して作業を終了する。

適切な権限が与えられてない場合は、次のようなエラーが表示されてしまう場合がある。
SELECT 権限がオブジェクト 'テーブル名'、データベース 'TestDB'、スキーマ 'dbo' で拒否されました。

このあたりの詳しい説明は「.NETエンタープライズWebアプリケーション開発技術大全〈Vol.4〉セキュアアプリケーション設計編 (マイクロソフトコンサルティングサービステクニカルリファレンスシリーズ―Microsoft.net)」のP88に書いてある。

トラックバック

トラックバックURL:
http://www.apricot-jp.com/cgi/mt/mt-tb.cgi/435

関連情報

・Microsoft JScript 実行時エラー:オブジェクトを指定してください。
・このログインで要求されたデータベースXXX を開けません。ログインに失敗しました。ASPNET はログインできません
・Logging Application Blockのトラブルシューティング
・IISのログ出力先
・このログインで要求されたデータベースXXX を開けません。ログインに失敗しました。ASPNET はログインできません
・C# 3.5 yieldの読み方
・ASP.NET サーバーサイドのイベント処理の順番
・ASP.NETのWebページでグーグルアドセンスを貼り付ける方法
・IIS メタベースにアクセスできませんでした
・VSSで管理されているプロジェクトは、ファイルの名前の変更や移動は極力行わない方が良い
・Oracle 9.2へOLE DB接続する方法
・単体テストのデータ
・この行は既に別のテーブルに属しています
・データベースのバージョンは 655 なので、開けません。
・証明書ストアでマニフェスト署名用の証明書が見つかりません。
・次のモジュールは最適化を有効にされて、またはデバッグ情報なしでビルドされました
・String.Concatメソッドを使った文字列の連結
・ファイルの存在をチェックする
・テキストファイルをロードし文字列を読み込むサンプル
・任意の数の引数を受け取るメソッド

Copyright(C) 2007 アーキテクト360 Allrights reserved.