Domino
|
DominoのAgentからLSXODBCを使用して、データベースからデータの取得をしていますが、 UDBの場合に全件データを読む前に、Agentが終わってしまう現象が発生しました。 ロジックは以下のようなものです。Set ODBCqry = New ODBCQuery Set ODBCqry.Connection = ODBCconn ODBCqry.SQL = "select pkey from tableA order by pkey" Set ODBCrs = New ODBCResultSet Set ODBCrs.Query = ODBCqry If ODBCrs.Execute = False Then Exit Sub End If 'レコードが何もなければ終了 If Not(ODBCrs.IsResultSetAvailable) Then Exit Sub End If 'ループ処理 Do 'とある処理ルーチン.... Call ODBCrs.NextRow Loop Until ODBCrs.IsEndOfData ODBCrs.IsEndOfDataが、10数件のところでtrueとなって終わってしまっていました。OracleのODBCの場合は正常に処理でき5000件のレコードが読み込まれます。UDBのODBCを使用した場合に処理は正常ですが、30件しかレコードが読み込まれていません。 試行錯誤の結果、以下のコードを追加することで回避ができました。 ODBCrs.cacheLimit = 20 ODBCrs.FetchBatchSize = 10原因は不明ですが、SQL文でselectする項目が多かったり、レコード数が多い場合に メモリーが不足すると発生するようです。 今回は、たまたま上記設定で回避することができました。 [注] cacheLimit < FetchBatchSize にする必要があるようです。 |