ASP.NETでmdbにアクセスできません – プログラミング – Home

ASP.NETでmdbにアクセスできま...
 
通知
すべてクリア

[解決済] ASP.NETでmdbにアクセスできません


アタリス
 アタリス
(@アタリス)
ゲスト
結合: 21年前
投稿: 5
Topic starter  

ASP.NETの書籍を購入し、早速勉強を始めたのですが
まずASP.NETWebアプリケーションでプロジェクトを作りました

サーバーエクスプローラからsample.mdbに接続し
接続テストは成功しました。
そこでoledbDataAdapterを配置しdataSetを生成しPage_Load()
で以下の一文のみを記述しました

oleDBDataAdapter.Fill(DataSet名, テーブル名);

ビルドも問題なく通り、いざ実行してみると
ファイル '<パス名>\sample.mdb' を開くことができませんでした。ほかのユーザーが排他的
に開いているか、データを読み取る権限がありません。
というエラーがでてしまいます・・

他のアプリからsample.mdbを参照していませんし、管理者権限を持っています。
もっとも初歩的なところで躓いているので何かが足りないのだと思いますが
ADO.NETを触るのはこれが初めてで解決しようにも知識が足りない状態です。

どうかヒントだけでも頂ければ幸いです。
宜しくお願いします。

Win2000Pro
VisualStudio.NET2003評価キット
一応
SQLServer2000 120日評価キットも入っています。


引用未解決
トピックタグ
suzuka
 suzuka
(@suzuka)
ゲスト
結合: 22年前
投稿: 46
 

ASP.NET の実行にはデフォルトでは ASPNET アカウントが使用されると思います。
ASPNET アカウントに該当 mdb ファイルへのアクセス権が
必要になるのではないでしょうか。

また、mdb ファイルのオープン時に *.ldb が
作成できるよう、フォルダにもアクセス権が必要かもしれません。


返信引用
アタリス
 アタリス
(@アタリス)
ゲスト
結合: 21年前
投稿: 5
Topic starter  

suzukaさん レスありがとうございます。

>ASPNET アカウントに該当 mdb ファイルへのアクセス権が
>必要になるのではないでしょうか

このASPNETアカウントにmdbファイルへのアクセス権というのは
どのように設定すれば良いのでしょうか?

ひょっとしてmdbファイルを
コントロールパネル -> 「管理ツール」->「データソース」で
設定してやる必要があるのでしょうか?

DB周りをほとんどやったことがないので質問ばかりで
本当に申し訳ありません。

宜しくお願いします


返信引用
suzuka
 suzuka
(@suzuka)
ゲスト
結合: 22年前
投稿: 46
 

アクセス権まわりは DB とは直接は関係ありません。

とりあえず、エクスプローラとかで
mdb ファイルの入っているフォルダを右クリックして
プロパティを表示してください。

「セキュリティ」タブを開いて追加ボタン。
「場所」は実行するコンピュータを選びます。
で、ASPNET アカウントをクリックしてから「追加」 → 「OK」。

元のダイアログに戻ったら ASPNET アカウントに
フルアクセスでもつけてやってください。

とりあえず、これで mdb の書き込みオープンが
できるのではないかと思います。

まあ、アクセス権がフルアクセスはどうかと思うので
あとで もっと制限してやってください。


返信引用
アタリス
 アタリス
(@アタリス)
ゲスト
結合: 21年前
投稿: 5
Topic starter  

レスが遅くなりました

suzukaさんが言われた通り、mdbファイルにASPNETアカウントを
設定して、とりあえず上記の問題は解決したのですが今度は

”System.Data.OleDb.OleDbException: ファイルをロックできませんでした。”
というエラーがでてしまいます。

デフォルトから追加したコードはPage_load()内で
this.oleDbDataAdapter1.Fill( this.dataSet11, T_商品 );
の一行だけでthis.dataSet11ががデータセットオブジェクト
T_商品がsample.mdb内のテーブル名です。

あとDataGridをひとつ配置し、DataSourceプロパティには
上記のdataset11を指定しています

申し訳ありませんが、もう少しだけ教えて頂けますでしょうか?
宜しくお願いいたします。


返信引用
suzuka
 suzuka
(@suzuka)
ゲスト
結合: 22年前
投稿: 46
 

フォルダはフルアクセスにしてみましたか?

Jet データベースの仕様として、
データベースオープン時に filename.ldb を
作成するようです。

Jet データベース エンジンは
このファイルを使用してデータベースのロック情報を保持しています。
逆に言えば、このファイルの読み書きが出来なければ
ロック情報を維持できません。

ためしに filename.ldb へのアクセス拒否設定をしたところ
ロックできない現象を再現できました。

アクセス権の設定を再度確認してください。
mdb が存在するフォルダか、*.ldb そのものに対する
アクセス権が不十分なのだと思います。


返信引用
アタリス
 アタリス
(@アタリス)
ゲスト
結合: 21年前
投稿: 5
Topic starter  

suzukaさん本当に何度もありがとうございました。

教えて頂いたとおり、フォルダにASPNETアカウントを設定し
フルコントロールを与えてやれば、問題なくアプリから
mdbにアクセスできるようになりました。

この辺とかセキュリティとかの絡みもあり、今後のことも
考えると今のうちにしっかり勉強しておこうと思います

本当にお世話になりました。


返信引用
アタリス
 アタリス
(@アタリス)
ゲスト
結合: 21年前
投稿: 5
Topic starter  

解決をチェックしてませんでした(^^;
申し訳ありません


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました