現象

Microsoft SQL Server Management Studio (SSMS) を使用して大量のデータを返す SQL クエリを実行すると、次のようなエラーメッセージが表示されます。

バッチの実行中にエラーが発生しました。 エラーメッセージ: ' OutOfMemoryException ' 型の例外がスローされました

原因

この問題が発生するのは、SSMS に大きな結果を割り当てるためのメモリが不足しているためです。注:  SSMS は、32ビットプロセスです。 したがって、メモリは 2 GB に制限されます。 SSMS では、結果ウィンドウのデータベースフィールドごとに表示できるテキストの量について、人為的な制限を設けています。 この制限は、"Grid" モードでは 64 KB、"テキスト" モードでは 8 KB です。 結果セットが大きすぎると、クエリ結果を表示するために必要なメモリが、SSMS プロセスの 2 GB の制限を超えている可能性があります。 したがって、大きな結果セットでは、「Symptoms」セクションで説明されているエラーが発生する可能性があります。

回避策

この問題を回避するには、次のいずれかの方法を試してください。

方法 1: 結果をテキストとして出力する

クエリの結果をテキストとして出力するようにクエリウィンドウを構成します。 テキスト出力では、grid よりもメモリ使用量が少なく、クエリ結果を表示するのに十分な場合があります。 この変更を行うには、次の手順を実行します。

  1. クエリウィンドウを右クリックします。

  2. [ 結果] をクリックします。

  3. [ 結果] をクリックします。

方法 2: 結果をファイルに出力する

クエリ結果をファイルに出力するようにクエリウィンドウを構成します。 ファイル出力では、最小限のメモリ量が使用されます。 これにより、結果セットを保存するためのメモリが予約されます。 この変更を行うには、次の手順を実行します。

  1. クエリウィンドウを右クリックします。

  2. [ 結果] をクリックします。

  3. [ 結果をファイルに保存] をクリックします。

  4. クエリを実行し、結果ファイルを保存する場所を選択します。

方法 3: sqlcmd を使用する

SSMS の代わりに sqlcmd ツールを使って SQL クエリを実行します。 このメソッドによって、SSMS UI で必要なリソースを使わずにクエリを実行できます。 さらに、64ビットバージョンの Sqlcmd を使って、32ビット SSMS プロセスに影響するメモリ制限を回避することもできます。

状態

マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。

ヘルプを表示

スキルを磨く
トレーニングの探索
新機能を最初に入手
Microsoft Insider に参加する

この情報は役に立ちましたか?

言語の品質にどの程度満足していますか?
どのような要因がお客様の操作性に影響しましたか?

ご意見をいただきありがとうございます。

×