佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > SQL Server出現(xiàn)System.OutOfMemoryException異常的解決方法

SQL Server出現(xiàn)System.OutOfMemoryException異常的解決方法

熱門標(biāo)簽:呼叫中心市場(chǎng)需求 Linux服務(wù)器 百度競(jìng)價(jià)排名 網(wǎng)站排名優(yōu)化 服務(wù)外包 鐵路電話系統(tǒng) AI電銷 地方門戶網(wǎng)站

今天在用SQL Server 2008執(zhí)行一個(gè)SQL腳本文件時(shí),老是出現(xiàn)引發(fā)類型為“System.OutOfMemoryException”的異常錯(cuò)誤,腳本明明是從SQL Server 2008導(dǎo)出的,應(yīng)該不會(huì)出錯(cuò),研究了好久問(wèn)題才得以解決。

出現(xiàn)這個(gè)錯(cuò)誤的主要原因是由于SQL腳本文件太大,估計(jì)超過(guò)了100M了,解決方法就是把腳本文件分成幾個(gè)腳本文件,分別去執(zhí)行即可。


來(lái)自微軟官方的解決方案:

原因:

因?yàn)橛?jì)算機(jī)沒(méi)有足夠的內(nèi)存來(lái)完成請(qǐng)求的操作,則會(huì)出現(xiàn)此問(wèn)題。

在 SQL Server 2000 Reporting Services 的限制會(huì)導(dǎo)致內(nèi)存綁定的處理報(bào)告的某些部分。例如,查詢結(jié)果處理和對(duì)象模型呈現(xiàn)受限于內(nèi)存。

計(jì)算機(jī)沒(méi)有足夠的內(nèi)存來(lái)完成請(qǐng)求的操作在一個(gè)或多個(gè)下列條件都為真:

1.一個(gè)報(bào)告是太大或太復(fù)雜。
2.其他正在運(yùn)行的進(jìn)程的費(fèi)用是非常高的。
3.計(jì)算機(jī)的物理內(nèi)存是太小。

處理報(bào)表,則分兩個(gè)階段。兩個(gè)階段是執(zhí)行和呈現(xiàn)。在執(zhí)行階段期間或在呈現(xiàn)階段,會(huì)出現(xiàn)此問(wèn)題。

如果在執(zhí)行階段中,會(huì)出現(xiàn)此問(wèn)題,此問(wèn)題很可能是因?yàn)樘嗟膬?nèi)存消耗在查詢結(jié)果中返回的數(shù)據(jù)。此外,下列因素會(huì)影響內(nèi)存消耗,在執(zhí)行階段:

1.分組
2.篩選
3.聚合
4.排序
5.自定義代碼

如果在呈現(xiàn)階段中會(huì)發(fā)生此問(wèn)題,原因被與該報(bào)表顯示何種信息以及報(bào)表顯示信息的方式。

1.數(shù)量和類型的控件
2.這些控件之間的關(guān)系
3.格式設(shè)置
4.顯示的數(shù)據(jù)量

解決方案:

若要解決此問(wèn)題,請(qǐng)使用下列方法之一。

方法 1

向計(jì)算機(jī)中添加足夠的物理內(nèi)存。

注意如果您超過(guò) 2 千兆字節(jié) (GB) 的內(nèi)存可以啟用該 / 3gb 切換在 Boot.ini 文件中為更好的性能。 有關(guān)如何在 SQL Server 中使用了 / 3gb 開(kāi)關(guān)的詳細(xì)信息單擊下面的文章編號(hào),以查看 Microsoft 知識(shí)庫(kù)中相應(yīng)的文章:
274750如何配置 SQL Server 使用 2 GB 以上物理內(nèi)存

方法 2

將報(bào)告計(jì)劃安排為在內(nèi)存限制時(shí)較低的非高峰時(shí)段運(yùn)行。

方法 3

調(diào)整所在進(jìn)行相應(yīng)設(shè)置。

注意:呈現(xiàn)時(shí)通過(guò)報(bào)告服務(wù) Web 服務(wù)的報(bào)告,該報(bào)告服務(wù) Web 服務(wù)從 Machine.config 文件中獲得所在。但是,計(jì)劃的報(bào)告呈現(xiàn)由報(bào)表服務(wù)器的 Windows 服務(wù)。報(bào)表服務(wù)器的 Windows 服務(wù)獲取從 RSReportServer.config 文件的所在。

有關(guān)所在的詳細(xì)信息,請(qǐng)參閱"更多信息"一節(jié)。

方法 4

升級(jí)到 64 位版本的 Microsoft SQL Server 2005年報(bào)告服務(wù)。

方法 5

重新設(shè)計(jì)該報(bào)表。若要執(zhí)行此操作,請(qǐng)使用下列方法之一。

方法 A

重新設(shè)計(jì)報(bào)表查詢。通過(guò)重新設(shè)計(jì)報(bào)表查詢,通過(guò)以下方法,可以減少內(nèi)存消耗:
1.報(bào)告查詢中返回更少的數(shù)據(jù)。
2.在報(bào)告查詢的 WHERE 子句中使用的一個(gè)更好的限制。
3.移動(dòng)到數(shù)據(jù)源的復(fù)雜的聚合。

方法 B

將報(bào)表導(dǎo)出為其他格式。通過(guò)使用不同的格式來(lái)顯示報(bào)表,您可以減少內(nèi)存占用。下表列出了幾個(gè)按順序從大多數(shù)內(nèi)存消耗到最低的內(nèi)存消耗的導(dǎo)出格式。

復(fù)制代碼 代碼如下:
格式    說(shuō)明
Microsoft Excel  呈現(xiàn)在 Excel 中的報(bào)表
(TIFF) 圖像   將報(bào)表呈現(xiàn)為靜態(tài)圖像的面向頁(yè)的格式
PDF     呈現(xiàn)報(bào)表采用可移植文檔格式 (PDF)
HTML    呈現(xiàn)到瀏覽器在 HTML 報(bào)表
CSV     呈現(xiàn)報(bào)表以逗號(hào)分隔的格式 ;在與 CSV 文件格式關(guān)聯(lián)的查看工具中打開(kāi)報(bào)表
XML     呈現(xiàn)報(bào)表的 XML ;在瀏覽器中打開(kāi)報(bào)表

注意:如果沒(méi)有應(yīng)用 XSLT 轉(zhuǎn)換,這種格式將消耗比 CSV 格式所消耗的內(nèi)存更少。

方法 C

簡(jiǎn)化報(bào)表設(shè)計(jì)??梢酝ㄟ^(guò)以下方式簡(jiǎn)化報(bào)表設(shè)計(jì)減少內(nèi)存消耗:
1.在報(bào)告中包含更少的數(shù)據(jù)區(qū)域或控件。
2.鉆取報(bào)表用于顯示詳細(xì)信息。
此外,如果報(bào)告的目的是只是數(shù)據(jù)的集合,可用于其他 Microsoft 產(chǎn)品更好的性能。例如,您可以使用數(shù)據(jù)轉(zhuǎn)換服務(wù) (DTS) 或 Microsoft SQL Server 2005年集成服務(wù)。

示例

下面的示例演示了如何解決此問(wèn)題。請(qǐng)考慮下面的示例:

1.以 PDF 格式,并以 Excel 格式,無(wú)法呈現(xiàn)在報(bào)表管理器返回 160 頁(yè)的報(bào)告。當(dāng)使用 8.5 × 11 英寸頁(yè)面尺寸時(shí),報(bào)表可能遠(yuǎn)遠(yuǎn)超過(guò) 250 頁(yè)。
2.報(bào)表的數(shù)據(jù)源返回報(bào)表服務(wù)器 500 兆字節(jié) (MB) 的數(shù)據(jù)。通常情況下,SQL Server 2000年報(bào)表服務(wù)要求數(shù)據(jù)集所使用的內(nèi)存量的兩到三倍。因此,SQL Server 2000年報(bào)告服務(wù)需要幾乎 1.5 GB 的內(nèi)存來(lái)呈現(xiàn)該報(bào)表。

若要解決此問(wèn)題,在此示例中,重新設(shè)計(jì)報(bào)表,以顯示該報(bào)表僅為有限的一組篩選器值的匯總數(shù)據(jù)。此外,請(qǐng)確保聚合發(fā)生在報(bào)告數(shù)據(jù)中提取數(shù)據(jù)庫(kù)查詢和聚合中的報(bào)告本身不是。這些方法有助于大大減少到報(bào)表服務(wù)器返回的數(shù)據(jù)量。因此,成功地并更快地呈現(xiàn)報(bào)表。

您可能感興趣的文章:
  • 解決SQL SERVER數(shù)據(jù)庫(kù)備份時(shí)出現(xiàn)“操作系統(tǒng)錯(cuò)誤5(拒絕訪問(wèn))。BACKUP DATABASE 正在異常終止?!卞e(cuò)誤的解決辦法
  • SQL Server自定義異常raiserror使用示例
  • SQLServer 連接異常與解決方法小結(jié)
  • SQLserver2000 企業(yè)版 出現(xiàn)"進(jìn)程51發(fā)生了嚴(yán)重的異常"錯(cuò)誤的處理方法
  • SQL Server 2005 中使用 Try Catch 處理異常
  • SqlServer異常處理常用步驟
  • SQL Server異常代碼處理的深入講解

標(biāo)簽:黃山 仙桃 湖南 崇左 蘭州 銅川 衡水 湘潭

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SQL Server出現(xiàn)System.OutOfMemoryException異常的解決方法》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    西乌| 房产| 诏安县| 廊坊市| 蓝山县| 汶川县| 确山县| 焦作市| 乌审旗| 威远县| 民县| 南宫市| 凤翔县| 黄山市| 鄂托克前旗| 红桥区| 双辽市| 洪湖市| 白银市| 龙泉市| 眉山市| 嘉义县| 绥滨县| 田东县| 平远县| 九寨沟县| 收藏| 图们市| 新龙县| 勐海县| 仁布县| 元朗区| 新化县| 邳州市| 汽车| 三台县| 嫩江县| 武冈市| 房产| 唐海县| 牙克石市|