ASP.NETの書籍を購入し、早速勉強を始めたのですが
まずASP.NETWebアプリケーションでプロジェクトを作りました
サーバーエクスプローラからsample.mdbに接続し
接続テストは成功しました。
そこでoledbDataAdapterを配置しdataSetを生成しPage_Load()
で以下の一文のみを記述しました
oleDBDataAdapter.Fill(DataSet名, テーブル名);
ビルドも問題なく通り、いざ実行してみると
ファイル '<パス名>\sample.mdb' を開くことができませんでした。ほかのユーザーが排他的
に開いているか、データを読み取る権限がありません。
というエラーがでてしまいます・・
他のアプリからsample.mdbを参照していませんし、管理者権限を持っています。
もっとも初歩的なところで躓いているので何かが足りないのだと思いますが
ADO.NETを触るのはこれが初めてで解決しようにも知識が足りない状態です。
どうかヒントだけでも頂ければ幸いです。
宜しくお願いします。
Win2000Pro
VisualStudio.NET2003評価キット
一応
SQLServer2000 120日評価キットも入っています。
ASP.NET の実行にはデフォルトでは ASPNET アカウントが使用されると思います。
ASPNET アカウントに該当 mdb ファイルへのアクセス権が
必要になるのではないでしょうか。
また、mdb ファイルのオープン時に *.ldb が
作成できるよう、フォルダにもアクセス権が必要かもしれません。
suzukaさん レスありがとうございます。
>ASPNET アカウントに該当 mdb ファイルへのアクセス権が
>必要になるのではないでしょうか
このASPNETアカウントにmdbファイルへのアクセス権というのは
どのように設定すれば良いのでしょうか?
ひょっとしてmdbファイルを
コントロールパネル -> 「管理ツール」->「データソース」で
設定してやる必要があるのでしょうか?
DB周りをほとんどやったことがないので質問ばかりで
本当に申し訳ありません。
宜しくお願いします
アクセス権まわりは DB とは直接は関係ありません。
とりあえず、エクスプローラとかで
mdb ファイルの入っているフォルダを右クリックして
プロパティを表示してください。
「セキュリティ」タブを開いて追加ボタン。
「場所」は実行するコンピュータを選びます。
で、ASPNET アカウントをクリックしてから「追加」 → 「OK」。
元のダイアログに戻ったら ASPNET アカウントに
フルアクセスでもつけてやってください。
とりあえず、これで mdb の書き込みオープンが
できるのではないかと思います。
まあ、アクセス権がフルアクセスはどうかと思うので
あとで もっと制限してやってください。
レスが遅くなりました
suzukaさんが言われた通り、mdbファイルにASPNETアカウントを
設定して、とりあえず上記の問題は解決したのですが今度は
”System.Data.OleDb.OleDbException: ファイルをロックできませんでした。”
というエラーがでてしまいます。
デフォルトから追加したコードはPage_load()内で
this.oleDbDataAdapter1.Fill( this.dataSet11, T_商品 );
の一行だけでthis.dataSet11ががデータセットオブジェクト
T_商品がsample.mdb内のテーブル名です。
あとDataGridをひとつ配置し、DataSourceプロパティには
上記のdataset11を指定しています
申し訳ありませんが、もう少しだけ教えて頂けますでしょうか?
宜しくお願いいたします。
フォルダはフルアクセスにしてみましたか?
Jet データベースの仕様として、
データベースオープン時に filename.ldb を
作成するようです。
Jet データベース エンジンは
このファイルを使用してデータベースのロック情報を保持しています。
逆に言えば、このファイルの読み書きが出来なければ
ロック情報を維持できません。
ためしに filename.ldb へのアクセス拒否設定をしたところ
ロックできない現象を再現できました。
アクセス権の設定を再度確認してください。
mdb が存在するフォルダか、*.ldb そのものに対する
アクセス権が不十分なのだと思います。
suzukaさん本当に何度もありがとうございました。
教えて頂いたとおり、フォルダにASPNETアカウントを設定し
フルコントロールを与えてやれば、問題なくアプリから
mdbにアクセスできるようになりました。
この辺とかセキュリティとかの絡みもあり、今後のことも
考えると今のうちにしっかり勉強しておこうと思います
本当にお世話になりました。
解決をチェックしてませんでした(^^;
申し訳ありません