- PR -

ASPとODBCを使った時のメモリ不足エラーについて

投稿者投稿内容
KAR
会議室デビュー日: 2007/02/19
投稿数: 11
投稿日時: 2008-01-02 17:34
いつもお世話になっております。
ASPによるプログラムをいちから勉強している者ですが

Accses2003をODBCにて使用しASPで動くプログラムを作成しております。
(Win2003R2 IIS6.0を使用)
DB内の情報を取得するプログラムを作っているのですが
時たま下記のようなエラーが表示されます。

=======================
Microsoft OLE DB Provider for ODBC Drivers エラー '8007000e'

[Microsoft][ODBC Microsoft Access Driver] メモリ不足です。
=======================

これは表示通りのメモリ不足だと考えているのですが
こちらで考えている要因で間違いないのでしょうか?

1.ODBCから読み込むデータが多い
2.SQL命令の条件が多く処理が複雑の為メモリを使用している
3.ODBCの構成からバッファサイズが足りていない

上記の要因のいずれかによるものでしょうか。
それとも別の要因があるのでしょうか?

申し訳ございませんが、上記のようなメモリ不足のエラーが表示される為
システムが安定せず大変困っております。
よろしければ皆様のお知恵を拝借頂きますようお願い致します。
Anthyhime
ぬし
会議室デビュー日: 2002/09/10
投稿数: 437
投稿日時: 2008-01-02 18:44
mdbの最適化をしてもだめでしょうか。

また、そうしたクリティカルな要求があるのであれば、そもそもmdbはそうした用途に向いていません。
SQL SERVERなら無料のエディションもあるので、そちらをお勧めします。
クリティカルな要求にも十分耐えられるはずです。
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2008-01-02 19:34
引用:

KARさんの書き込み (2008-01-02 17:34) より:
DB内の情報を取得するプログラムを作っているのですが
時たま下記のようなエラーが表示されます。

=======================
Microsoft OLE DB Provider for ODBC Drivers エラー '8007000e'

[Microsoft][ODBC Microsoft Access Driver] メモリ不足です。
=======================


今の時代に ODBC を使う必要性はあるのでしょうか?
「Microsoft OLE DB Provider for ODBC Drivers」の代わりに「Microsoft OLE DB Provider for Microsoft Jet」を使ったほうが、不安要素が1つ減って良いと思います。

エラーコード '8007000e' を検索してヒットする、
http://support.microsoft.com/kb/193026/ja
などを見ても、古いものは使わないほうが良さそうです。
KAR
会議室デビュー日: 2007/02/19
投稿数: 11
投稿日時: 2008-01-05 13:57
>Anthyhimeさん
ご教授いただきありがとうございます。
最適化しても出るときがあります。
SQL SERVERに関しましては今後検討したいと思います。

>unibonさん
「Microsoft Jet」というのは知りませんでした。
ODBCにこだわっている訳ではなく、他の方法を存じませんでした。
勉強して使用してみたいと思います。
KAR
会議室デビュー日: 2007/02/19
投稿数: 11
投稿日時: 2008-01-06 18:10
いつもお世話になっております。
その後、色々と調べまして「JETエンジン」に関しまして知識を深めました。

そこで分かったことなのですが
「JETエンジン」という物はファイル共有形式の為
ASPのように公開するタイプの接続には不向きなのだと知りました。
現在開発を行っているプログラムがお客様へと商品データを公開・閲覧して頂く為
大変不安に感じております。

やはりそうなると
「SQL server」に変更するか
現状のまま「ODBC」を利用するのがよろしいのでしょうか
それとも、それほど気にせずとも「JETエンジン」にて対応できるのでしょうか

よろしければ改めてご教授頂きますようお願い致します。
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2008-01-06 21:03
引用:

KARさんの書き込み (2008-01-06 18:10) より:
そこで分かったことなのですが
「JETエンジン」という物はファイル共有形式の為
ASPのように公開するタイプの接続には不向きなのだと知りました。


Jet も Access も同じモノです。「ファイル共有形式」であるのは「Microsoft OLE DB Provider for ODBC Drivers」を使っても「Microsoft OLE DB Provider for Microsoft Jet」を使っても同じことです。ミドルウェアのレイヤーの違いだけです。前者は ODBC という古い規格をサポートするためだけのドライバーです。

引用:

KARさんの書き込み (2008-01-06 18:10) より:
やはりそうなると
「SQL server」に変更するか
現状のまま「ODBC」を利用するのがよろしいのでしょうか
それとも、それほど気にせずとも「JETエンジン」にて対応できるのでしょうか


たとえていえば「SQL server」が大きな金庫で「JETエンジン」は財布みたいなものです。安全になる側を考えれば「SQL server」でしょう。

ただ掲示板などでは否定的な意見も多いですが、私は「JETエンジン」でもかなりのことはできると思います。でも「百万円をしまうのに財布でも良いですか?」みたいに人から聞かれると、私も「う〜ん、金庫にしまってください」と回答してしまうかもしれません。
OakBow
ベテラン
会議室デビュー日: 2007/09/15
投稿数: 51
投稿日時: 2008-01-09 03:29
>今の時代に ODBC を使う必要性はあるのでしょうか?
>「Microsoft OLE DB Provider for ODBC Drivers」の代わりに「Microsoft OLE DB Provider for Microsoft Jet」を使ったほうが、不安要素が1つ減って良いと思います。

え?
ODBCに何か問題があるのですか?
提示されたKBの情報は随分前に修正された不具合に関するもので、ODBCを積極的に避ける理由には全くならないと思うのですが。
MSが利用を推奨しないとかアナウンスしているようにも見受けられませんし、一般にもそんな話が出ているようには思えませんし。

ACCESSへの接続に関しては、ODBCを使う必要が特にあるわけではないとは思いますけれど、古くて今更な代物だとは特に思わないんですが。。
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2008-01-12 14:22
引用:

OakBowさんの書き込み (2008-01-09 03:29) より:
え?
ODBCに何か問題があるのですか?
提示されたKBの情報は随分前に修正された不具合に関するもので、ODBCを積極的に避ける理由には全くならないと思うのですが。
MSが利用を推奨しないとかアナウンスしているようにも見受けられませんし、一般にもそんな話が出ているようには思えませんし。


私もそれほど ODBC は嫌いではないので、たとえばマイナーな DBMS を使っていて、接続方法が ODBC ドライバーしかない、という場合なら、ODBC を使っても良いと思います。

引用:

OakBowさんの書き込み (2008-01-09 03:29) より:
ACCESSへの接続に関しては、ODBCを使う必要が特にあるわけではないとは思いますけれど、古くて今更な代物だとは特に思わないんですが。。


Jet(Access)も、別に ODBC でもそんなに悪くはないとは思いますが、でも、ODBC 以外の方法があり、かつ、ADO に対して接続文字列をちょこちょこっと変えるだけ、それだけ、で済むのに、わざわざ ODBC を使う必要性もないと思います。
とくに今回のケースでは、出ているのが「メモリ不足」という類の掴みようのないエラーなので、代替候補があり、かつ、それが新しいモノ(最新のモノと言う意味ではなく、古くないモノという意味)、ならば、それを試すほうが良いと感じます。試さないほうが良いという理由は思いつきません。

スキルアップ/キャリアアップ(JOB@IT)