-2

経由Delphiで接続するアプリケーションが 1 つあります。を用いて開発。MS-SqlServer-2008R2BDE + ODBCDelphi 7

TDatabase, TTable, TQueryコンポーネントを使用したデータへのアクセス。

TDatabaseBDE のエイリアス名を指し、 プロパティを使用する他のコンポーネントを指しますTDatabase.Databasename

メインのトランザクション テーブルには 300,000 を超えるレコードがあります。

メインアプリケーションでテーブルをクエリすると、TQuery与えられたレコード数は 250 万ですが、テーブルには 300k レコードしかありません。クエリを開いた後、アプリケーションがクラッシュしました。ここで何が問題なのですか?

コードをデバッグすると、"Memory Error"atが得られTQuery.Openます。しかし、アプリケーションの実行中にエラーは発生せず、アプリケーションだけがクラッシュしました。

クエリを開く前にタスクマネージャーでメモリ使用量を確認しました20 MBが、クエリを開いた後、アプリケーションは700 MB memory.

同じクエリをコピーして SQL サーバー管理スタジオで実行し、45000 レコードを取得しました。

ここでも、1 つのフォームと 1 つTQueryの ,を持つ小さなアプリケーションをもう 1 つ作成TDatabaseし、クエリを実行すると、正しいカウント 45000 が得られます。

メイン アプリケーションで異常なレコード数が表示されるのはなぜですか?

4

1 に答える 1

2

データベース コンポーネントのプロパティ 'Params' を確認してください。パラメータが RowSet Size = -1 で設定されている場合。そこにある場合は、それを削除します。これが問題の原因です。

于 2015-03-15T16:08:44.330 に答える