プロが教える店舗&オフィスのセキュリティ対策術

お世話になります

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なのでしょうか

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

A 回答 (2件)

SQL Serverのバージョン書いてないから


なんともいえませんけど、
SQL文の長さに上限があるのはご存知ですか?

例えば、
http://msdn.microsoft.com/ja-jp/library/ms143432 …

「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なので。。。
あやしいと思うけど。
    • good
    • 0

SQL Server のバージョンがわからないですが、もしかすると↓かなぁ?


http://support.microsoft.com/kb/288095
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!