2016-04-01 13 views
2

私は、顧客用のExcelレポート作成ツールを開発中です。このツールは、さまざまなデータベースで使用されています。基本的には、特定のテーブルからデータを取得し、Excel用のレポートを顧客に書き込みます。それはこれまで働いていましたが、テスト中に私はデータを取得するために割り当てられたメモリを超えるテーブルを実行しました。MS SQL Server、OutOfMemeryExceptions

これを回避する方法はありますか?

SQL Serverで割り当てられたモーメントを変更することはできません。

私は必要に応じてコードを提供しますが、これは私の質問に何かを追加するとは思わなかった。

+0

メモリ不足、SQLクエリコード、テーブルのサイズ、行数、予想される結果などにつながる詳細情報を共有する必要があります。 – AKS

+0

エラーが発生していますかSQL Server、Excel、またはそれらをリンクするために使用しているツール/コード –

答えて

1

SSMS(SQL Server Management Studio)を使用している間に、非常に大きなデータセットをグリッドに返す前に、これを実行しました。このエラーは、SQLエージェント・ジョブから開始されたストアド・プロシージャなどの他のプロセスで実行された場合は発生しません。したがって、あなたのテスト方法のせいでこのエラーが導入されているだけかもしれません。

SSMSのメモリ制限は32ビットプロセスなので2 GBです。これはVisual Studioに基づいている可能性が高いためです。

2つの選択肢:すべての結果をロードするのではなく、ドライブの記憶容量を使用するファイル(Ctrl + Shift + F)に保存するように結果をテキスト(Ctrl + T)に変更します。メモリ。

注:これらの設定は、実行計画オプションの横にあるツールバーにもあります。

Microsoft KBの記事があります。 (https://support.microsoft.com/en-us/kb/2874903

SSMSは32ビットプロセスです。したがって、2 GBのメモリに制限されています。 SSMSは、結果ウィンドウのデータベースフィールドごとに表示されるテキストの量を人為的に制限します( )。この制限は、 "グリッド"モードで64 KB、 "テキスト"モードで8 KBです。結果セットのサイズが でも大きい場合、クエリ結果を表示するために必要なメモリは、 がSSMSプロセスの2 GBの制限を超えている可能性があります。