プロが教えるわが家の防犯対策術!

SQLServer2000、VB6.0sp6を使用してアプリケーションを作成しました。
SQLの設定として、割り当て済み領域の設定は自動拡、容量無制限にしています。
アプリケーションから大量のデータを1度に登録、更新を行っているとエラー(ABEND)が発生し、
「開かれているカーソルが存在しないか閉じられています」というメッセージが表示されました。
今まで何度も行ってきた処理なので、プログラムエラーではないと判断し、他の原因を考えてみたところ、割り当て済み領域の拡張が終わる前にデータの登録や更新が行われたのでエラーが発生したのでは?と思い、割り当て済み領域を手動で拡張してからエラー発生前の状態にデータを戻し、再度実行したところ正常に処理されました。

原因、解決方法はこれでよかったのでしょうか?
割り当て済み領域は圧縮するか、定期的に増やしていくしかないのでしょうか?
データを減らすことによって割り当てた領域内で運用というのは無理なのでしょうか?

どなたかご存知の方がいらっしゃいましたらよろしくお願いします。

A 回答 (1件)

その方法では正解とは言えません。

原因が分からないまま解決しようとしているからです。

まずエラーが発生している直接の原因は「開かれているカーソルが存在しないか閉じられています」なのですから、なぜそのエラーが発生した場所において開かれているカーソルが存在しない、あるいはカーソルが閉じられているのか、それを調べてください。

おそらくは、そのエラーメッセージが表示される以前の段階で既にエラーが発生して「カーソルを開くことができない状態」となっているにもかかわらず、アプリケーションがそのエラーをチェックせずに次に処理を進めているため、質問のようなエラーが発生しているのではないかと思います。

エラーメッセージが指し示すエラーの直接の原因が判明したら、ようやく、その「原因」を生じさせている理由(真の原因)を調べることができます。それが判明しないうちに何か行っても、その行った「何か」がエラーとどういう関係にあるのかは全く不明なのですから、その行為が正しいのか否かを論ずることはできません。
    • good
    • 0

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