徵狀

當您使用 Microsoft SQL Server Management Studio (SSMS)執行傳回大量資料的 SQL 查詢時,您會收到類似以下的錯誤訊息:

執行批次處理時發生錯誤。 錯誤訊息為:拋出「OutOfMemoryException ' 類型的例外狀況

原因

之所以發生這個問題,是因為 SSMS 的記憶體不足,無法針對大型結果進行分配。注意: SSMS 是一個32位程式。 因此,它限制為 2 GB 的記憶體。 SSMS 對 [結果] 視窗中每個資料庫欄位可顯示的文字數量施加限制。 這個限制是在 "Grid" 模式中為 64 KB,在 "文字" 模式中則是 8 KB。 如果結果集太大,則顯示查詢結果所需的記憶體可能會超過 SSMS 進程的 2 GB 限制。 因此,大型的結果集可能會導致「症狀」一節中所述的錯誤。

因應措施

若要解決此問題,請嘗試下列其中一種方法。

方法1:將結果輸出為文字

設定 [查詢] 視窗,以文字形式輸出查詢結果。 文字輸出使用的記憶體少於格線,而且可能足夠顯示查詢結果。 若要進行這項變更,請遵循下列步驟:

  1. 以滑鼠右鍵按一下 [查詢] 視窗。

  2. 按一下 [ 結果]。

  3. 按一下 [ 結果至文字]。

方法2:將結果輸出至檔案

設定 [查詢] 視窗,將查詢結果輸出到檔案。 檔案輸出使用的記憶體量最低。 這會保留更多儲存結果集的記憶體。 若要進行這項變更,請遵循下列步驟:

  1. 以滑鼠右鍵按一下 [查詢] 視窗。

  2. 按一下 [ 結果]。

  3. 按一下 [ 結果] 以歸檔

  4. 執行查詢,然後選取要儲存結果檔的位置。

方法3:使用 sqlcmd

使用 sqlcmd 工具而不是 SSMS 來執行 SQL 查詢。 這個方法可讓查詢在沒有 SSMS UI 所需的資源的情況下執行。 此外,您也可以使用64位版本的 Sqlcmd 來避免影響32位 SSMS 進程的記憶體限制。

狀態

Microsoft 已確認<適用於>一節中所列的 Microsoft 產品確實有上述問題。

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×