• 締切済み

実行時エラー 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なのでしょうか ご存知の方がいらっしゃいましたら、ご教授の程、よろしくお願い致します。

みんなの回答

  • Siegrune
  • ベストアンサー率35% (316/895)
回答No.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なので。。。 あやしいと思うけど。

回答No.1

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

関連するQ&A

  • where条件内のin句について

    質問です。 where code in(select code from list where ....) ------------------------------------------ といったwhere句がある場合ですが、 in句でヒットしている件数が5000件を超えているため SQLを発行してもタイムアウトでエラーになります。 何か回避策はないでしょうか? よろしくお願いします。

  • オラクルではできるのにSQLSERVERではサブクエリーで複数キーを指定できない?

    サブクエリーで複数キーを指定したいです。例えば以下のようなSQLですが、 SQL> > select * from テーブルA > where (key1,key2) in (select key1,key2 from テーブルB) このSQLはオラクルでは実行できますが、SQLSERVERでは文法エラーになってしまいます。SQL SERVER ではサブクエリーで複数キーを指定するのは不可能なのでしょうか?

  • VB6+SQL サーバー 2000 で 実行時エラー '3704' がでます:

    VB6 + SQL サーバー 2000 でDB接続を行っていますが リストのように SELECT 文の後にInsert 文を実行しようとし Re.Closeを実行すると ------------------------------------------------------------- 実行時エラー '3704': オブジェクトが閉じている場合は、操作は許可されません -------------------------------------------------------------  とエラーになり、連続するSQL文を実行する場合のopen ,Close は どのように書けばよろしいのでしょうか。  ネット上で見つけた資料によるとメソッド RE.CancelUpdate を使うと ありましたがこれもエラーとなります。 どなたか 教えていただけないでしょうか。 --- sample ---------------------------------------- Dim Cn As New ADODB.Connection Dim Re As New ADODB.Recordset Connect = "" Connect = "Provider = SQLOLEDB;" _ & "Data Source = サーバー;" _ & "User ID = sa;" _ & "Password = パスワード;" _ & "initial Catalog = database;" ' Cn.Open Connect ' strSQL = "SELECT * from DBTBL WHERE CODE = '000001'" Re.Open strSQL, Cn, adOpenKeyset 'SQL文を実行 Re.Close ' strSQL = "Insert Into MAS1PF (CODE,NAME,TEL,FAX) Values('11111','名前','TEL,'FAX)" Re.Open strSQL, Cn, adOpenKeyset 'SQL文を実行 ' Re.Close Cn.Close

  • PHP+MySQL syntaxエラー

    SELECT * FROM option WHERE id='W01' SELECT * FROM option WHERE id='A01' を実行させたところ You have an error in your SQL syntax near 'option WHERE id='W01'' at line 1 You have an error in your SQL syntax near 'option WHERE id='A01'' at line 1 というエラーが返ってきました。 optionテーブルがあり、idというフィールドもあり、 idフィールドでW01、A01ともに存在します。 どなたかお答え頂ければと思います。

    • ベストアンサー
    • MySQL
  • MySQLのサブクエリーでエラーがでます

    現在MySQLを使って開発をしています。 SQLもMySQLもまだあまり使ったことがないのでなにか大きな勘違いをしている かもしれませんが、自分で作ったデータベースにMysqlコマンドでアクセスし、 以下のようにselectを行うとsyntaxエラーが発生します。 mysql> select CREATE_DATE from user where cust_id = (select cust_id from customer where memo = 'memo'); ERROR 1064: You have an error in your SQL syntax near 'select cust_id from customer where memo = 'memo')' at line 1 しかしサブクエリーの内容も、その前のselectもそれぞれ下記のように単体で実行すると正常に動作するので、文法的には間違っていないと思います。 ERROR 1064のsyntaxエラーは何を指しているのでしょうか? ぜひご教示ください。 mysql> select cust_id from customer where memo = 'memo'; +---------+ | cust_id | +---------+ | 1 | +---------+ 1 row in set (0.00 sec) mysql> select CREATE_DATE from user where cust_id = '1'; +-------------+ | CREATE_DATE | +-------------+ | 2001-07-23 | +-------------+ 1 row in set (0.00 sec)

  • IN句に副問合わせを使う場合と使わない場合

    お世話になります。 SQLについての質問です。 RDBMSはSymfowareです。 IN句に副問い合わせを指定するSQLと その副問い合わせの結果を直接IN句に記載したSQLで 結果が異なってしまいます。 こういうことってありますでしょうか。 以下のようなSQLです。 (1) SELECT * FROM T1 WHERE T1.column_A IN ( SELECT T2.column_A FROM T2 WHERE T2.column_B='XXXX' ) 上記IN句内のSELECT文の結果は、'A'、'B'、'C'、'D'です。 (2) SELECT * FROM T1 WHERE T1.column_A IN ('A','B','C','D') この(1)、(2)のSQLの結果が異なってしまいます。 私の環境では(1)では0件、(2)では2件ヒットします。 なぜこのようになるのかわかる方がいらっしゃいましたら ご教授ください。 ちなみに、DBを操作して、副問い合わせのSELECT文の結果を 'A'、'B'とすると同じ結果が得られます。 副問い合わせのSELECT文の結果が3件以上になると(1)のSQLの 結果は0件になってしまいます。 RDBMSの障害でしょうか・・・? それとも、IN句に副問い合わせを使用する場合、 その副問い合わせの結果は2件以下にする必要がある なんてルールがあったりするのでしょうか。

  • 以下のSQL文を実行したのですが、MySQL server has g

    以下のSQL文を実行したのですが、MySQL server has gone awayというエラーが発生してしまいます。 さまざまなサイトを確認したのですが間違いが分からないため質問をさせていただきました。 よろしくお願いします。 SELECT * FROM t1 WHERE f1 = ANY (SELECT f1 FROM t2 WHERE group = '1'); (SELECT f1 FROM t2 WHERE group = '1')では30件程度が該当し、t1は5万行前後です。 MySQL クライアントのバージョン: 5.1.22-rc

  • SQLエラー

    検索システムの検索結果の分割をしようとしています。 しかしどうしてもSQL文にエラーがでてしまいます。 SELECT * FROM shops where (area='◯◯◯') ORDER BY id DESC limit0, 10 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'limit0, 10' at line 1 該当するSQL文は以下になります。 $query = "SELECT * FROM shops"; $where = array(); if (isset($_GET['area'])and($_GET['area'] !== '')) { $where[] = sprintf("(area='%s')", mysql_real_escape_string($_GET['area'])); } if (count($where) <> 0) { $query .= ' where ' . implode(' and ', $where) . ' ORDER BY id DESC '; }   $query .= "limit" . $page_num*10 . ", 10" ; limit句の使い方等間違いはないのかなと思うのですが、いかがでしょうか? アドバイスご教示いただけないでしょうか。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • CSV出力時、件数によりエラーとなってしまいます。

    はじめまして IISの問題か、SQL Serverの問題なのかわからないので、両カテゴリーに同様の質問をさせていただいております。 OS:2003Server、DB:SQL Server2000 WEBサーバ、DBサーバは別サーバです。 CSVを出力するASPを実行させているのですが、出力件数が多い時に下記エラーとなります。 (数十件の場合は、問題ありません。) 【エラー内容】  Microsoft OLE DB Provider for SQL Server エラー '80004005'  [DBNETLIB][ConnectionOpen (Connect()).]SQL Server が存在しないか、アクセスが拒否されました。  /daityo/CsvOut.asp,行168 エラー箇所としては、SQLを実行しDBにアクセスする命令時に発生します。(実行毎に、エラーとなる行が変わります。) どこかで、タイムアウトしているのかと思い、'MetaBase.xml’の下記部分の値を変更しましたが、改善されませんでした。 AspMaxRequestEntityAllowed="102400000" 現在、手詰まり状態です。 皆様のお力をお貸しいただけないでしょうか? 宜しくお願いいたします。

  • CSV出力時、件数によりエラーとなってしまいます。

    はじめまして OS:2003Server、DB:SQL Server2000 WEBサーバ、DBサーバは別サーバです。 CSVを出力するASPを実行させているのですが、出力件数が多い時に下記エラーとなります。 (数十件の場合は、問題ありません。) 【エラー内容】  Microsoft OLE DB Provider for SQL Server エラー '80004005'  [DBNETLIB][ConnectionOpen (Connect()).]SQL Server が存在しないか、アクセスが拒否されました。  /daityo/CsvOut.asp,行168 エラー箇所としては、SQLを実行しDBにアクセスする命令時に発生します。(実行毎に、エラーとなる行が変わります。) どこかで、タイムアウトしているのかと思い、'MetaBase.xml’の下記部分の値を変更しましたが、改善されませんでした。 AspMaxRequestEntityAllowed="102400000" 現在、手詰まり状態です。 皆様のお力をお貸しいただけないでしょうか? 宜しくお願いいたします。

専門家に質問してみよう