SQL実行時に「メモリが不足しています。する質問をすることでしか得られない、回答やアドバイスがある。15分調べてもわからないことは、質問しよう!質問するただいまの回答率89.62%トップC#に関する質問C#VB.NETJavaScriptを有効にしてくださいSQL実行時に「メモリが不足しています。43前提・実現したいことタイトル通りですが、作成しているアプリケーションからSQLを実行すると下記の例外が発生してしまいます。SQLが悪いのか、アプリ実装時の問題なのか原因がわからず困っております。発生している問題・エラーメッセージSystem.OutOfMemoryExceptionメモリが不足しております。Function試したこと実行するSQLをSSMSで実行すると問題なく実行されます。(約200万レコード,30秒ほど。)時期を指定し、その期間のクエリを発行するのですが期間が長くなると上記の例外が発生してしまいます。非同期での取得方法に誤りがあるのか、それとも単純にDataTableの限界なのか原因を把握できておりません。他の方法での取得方法はございますでしょうか。standardattachmentクリップ0気になる質問をクリップするクリップした質問は、後からいつでもマイページで確認できます。クリップした質問に回答があった際、通知やメールを受け取ることができます。自分も答えを知りたい質問者以外のユーザにも役立つ評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。質問の評価を上げたことを取り消します低評価-評価を下げられる数の上限に達しました評価を下げることができません1日5回まで評価を下げられます1日に1ユーザに対して2回まで評価を下げられます質問の評価を下げるteratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。コメントをしてください。送信する質問の評価を下げる機能の利用条件この機能を利用するためには、以下の事項を行う必要があります。件sort評価が高い順sort新着順sort古い順link+3質問のコードでは、SQLで読みだされた全データがメモリ上の変数dataTableに格納されます。System.OutOfMemoryExceptionが発生します。プロセスが使えるメモリ量を増やす事で解決する可能性があります。具体的には、仮想メモリのサイズ(ページファイルのサイズ)を大きくします。プロセスが使えるメモリの上限(32bitのWindowsでは4GB)に達していてSystem.OutOfMemoryExceptionになっている場合には、仮想メモリの設定では解決できません。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。14:17返信ありがとうございます。>仮想メモリのサイズ簡易的なアプリケーションなのでそこまで膨大なメモリを使用することを想定しておりませんでした。上記の例外が発生する際には1GB近くのメモリを消費していたのでそれが原因のようですね。返信ありがとうございます。簡易的なアプリケーションなのでそこまで膨大なメモリを使用することを想定しておりませんでした。上記の例外が発生する際には1GB近くのメモリを消費していたのでそれが原因のようですね。キャンセル完了するlinkcheckベストアンサー0DataTableはとても重たいので200万レコードも入れたら、OutOfMemoryExceptionを起こさなかったとしても使い物にならないと思います。快適なアプリケーションを作るためには、一度に扱うのは1万レコード未満にすることをお勧めします。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。14:15返信ありがとうございます。>DataTableはとても重たいのでのようですね。代わりのものというのはあるのでしょうか。List?>一度に扱うのは1万レコード未満にSQL側で件数を1万件に抑えることはできますが、1万以降のレコードを表示する際にはどのようにすればよいのでしょうか。GridViewのようなコントロールに表示させられる限界なのか。それとも万以上のレコードを表示するようなアプリから見直すべきなのか。返信ありがとうございます。代わりのものというのはあるのでしょうか。SQL側で件数を1万件に抑えることはできますが、1万以降のレコードを表示する際にはどのようにすればよいのでしょうか。GridViewのようなコントロールに表示させられる限界なのか。それとも万以上のレコードを表示するようなアプリから見直すべきなのか。15:371万って書いたのは上限で、GridViewで表示するなら100件ぐらいにしていおたほうが良いかとおもいます。>代わりのものというのはあるのでしょうか。いい選択だと思います。>SQL側で件数を1万件に抑えることはできますが、1万以降のレコードを表示する際にはどのようにすればよいのでしょうか。データ自体に指標となるものがある場合はそれで、無い場合はプライマリーキーに対してシーケンシャル番号を振る位しかないでしょうね。1万って書いたのは上限で、GridViewで表示するなら100件ぐらいにしていおたほうが良いかとおもいます。>代わりのものというのはあるのでしょうか。いい選択だと思います。>SQL側で件数を1万件に抑えることはできますが、1万以降のレコードを表示する際にはどのようにすればよいのでしょうか。データ自体に指標となるものがある場合はそれで、無い場合はプライマリーキーに対してシーケンシャル番号を振る位しかないでしょうね。16:13このサイト例では、トップページの新着タブを開いたときは20件ほどしか表示してませんよね。続きを見たい場合は「▽もっと見る」を押すようになってます。一度に表示する件数を増やしても、見づらくなってユーザにとってのメリットは殆どありません。詳しくは「画面のページング」などで検索してみてください。このサイト例では、トップページの新着タブを開いたときは20件ほどしか表示してませんよね。続きを見たい場合は「▽もっと見る」を押すようになってます。一度に表示する件数を増やしても、見づらくなってユーザにとってのメリットは殆どありません。詳しくは「画面のページング」などで検索してみてください。思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る閉じるトップC#に関する質問SQL実行時に「メモリが不足しています。頂いたご意見への回答は行っておりません。