我們正在從sql server數據庫中提取大量數據。它有大約25000行,2500列。要求是讀取數據並將其導出到電子表格,因此分頁不是一種選擇。當記錄較少時,它可以提取數據,但當它增長到我上面提到的大小時,就會拋出異常。當從數據庫中提取大量數據時,內存不足異常
public DataSet Exportexcel(string Username)
{
Database db = DatabaseFactory.CreateDatabase(Config);
DbCommand dbCommand =
db.GetStoredProcCommand("Sp_ExportADExcel");
db.AddInParameter(dbCommand, "@Username", DbType.String,
Username);
return db.ExecuteDataSet(dbCommand);
}
請幫我解決這個問題。
您可以通過提取僅1000行並檢查返回的DataSet的大小來計算數據集大小嗎?然後乘以25並檢查您的服務器是否有足夠的內存。注意ASP.NET,IIS和Windows Server體系結構可能會有一些限制,所以如果你遇到任何限制,那麼即使服務器有2TB的內存也無濟於事......但首先檢查你的實際數字... – 2012-02-07 11:52:48
爲什麼不寫一個查詢來限制你從數據庫中獲取的行數。重複它,直到你將它們全部導出。 – onatm 2012-02-07 11:53:19
您需要傳輸數據,將數據導出到脫機數據集,使用DataReader遍歷記錄集中的每一行,這樣您就不會一次吞下內存。 – Mantorok 2012-02-07 11:53:23