こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

実行時エラー 3035 メモリ不足です。

お世話になります

VB6+SQL Server+DAO 3.5(3.6かも)で、開発を行っているプログラムがあります。
(OS:Windows2000 、Vista 双方で確認)

VB6でSQL ServerのとあるテーブルにSelectを実施したいのですが、
Where区に大量の条件を記述すると、件名のようなエラーがおきます。

具体的には以下のようなSQLです

SELECT aaa,bbb FROM table_c WHERE col in '1234567890','xxxxxxxxx','xxxxxxxxxx' …

in区のあとに、10文字の文言を、何個か指定するのですが、
その件数が多いと件名のようなエラーになります。

テスト環境で実行した際には、
in区のあとに、5000件を指定=OK、5500件を指定=エラー
となりました。

質問させて頂きたいのですが、
1:このエラーの原因は何なのでしょうか?
マイクロソフト サポート オンライン などで、その原因について載っているサイトがあれば
教えてください

症状としては、↓が近いのですが、これはAccess 2007なので、
もしかしたら、ちょっと違うのかなと思っています。
http://support.microsoft.com/kb/918814/ja


2:このエラーが起こった際は、単純にin区の中の件数を減らせばOKなのでしょうか

ご存知の方がいらっしゃいましたら、ご教授の程、よろしくお願い致します。

投稿日時 - 2011-05-06 01:26:44

QNo.6717162

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

SQL Serverのバージョン書いてないから
なんともいえませんけど、
SQL文の長さに上限があるのはご存知ですか?

例えば、
http://msdn.microsoft.com/ja-jp/library/ms143432(v=SQL.90).aspx

「SQL ステートメントが含まれた文字列の長さ (バッチ サイズ)」参照。

SQL ServerおよびDAOのマニュアル見てみてください。

SQL Server2000かDAOか
どっちかが64Kが上限だったような記憶が。
(SQL Server2005以降は設定しだい。)

1件毎に'xxxxxxxxx',だから13文字。
5000件では、
5000*13=65,000

5500件では、
5500*13=71,500

64K=65,535なので。。。
あやしいと思うけど。

投稿日時 - 2011-05-06 02:43:15

ANo.1

SQL Server のバージョンがわからないですが、もしかすると↓かなぁ?
http://support.microsoft.com/kb/288095

投稿日時 - 2011-05-06 02:25:39