簡體   English   中英

查詢大型SQL表時出現System.OutOfMemoryException

[英]System.OutOfMemoryException when querying large SQL table

我編寫了一個如下所示的SQL查詢:

SELECT * FROM MY_TABLE WHERE ID=123456789;

當我在SQL Server Management Studio的查詢分析器中運行它時,查詢永遠不會返回; 相反,大約十分鍾后,我收到以下錯誤: System.OutOfMemoryException

我的服務器是Microsoft SQL Server(不確定是什么版本)。

SELECT * FROM MY_TABLE; -- return 44258086
SELECT * FROM MY_TABLE WHERE ID=123456789; -- return 5

這張桌子有四千多萬行! 但是,我需要獲取五個特定的行!

我該如何解決這個令人沮喪的錯誤?

編輯:服務器突然開始工作正常,沒有明顯的原因,但我會將此問題留給任何想要為其他任何人提出此問題的故障排除步驟的人。

根據http://support.microsoft.com/kb/2874903

出現此問題的原因是SSMS沒有足夠的內存來分配大的結果。 注意SSMS是一個32位進程。 因此,它限制為2 GB的內存。

本文建議嘗試以下方法之一:

  • 將結果輸出為文本
  • 將結果輸出到文件
  • 使用sqlcmd

您可能還想檢查服務器以查看它是否需要重新啟動服務 - 也許它已經吞噬了所有可用內存?

另一個建議是選擇較小的列子集(如果表有很多列或包含大的blob列)。

如果需要特定數據,請使用適當的WHERE子句。 如果您對此感到困惑,請添加更多詳細信息。

或者編寫一個使用游標操作的小應用程序,而不是嘗試將其完全加載到內存中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM