导出“datareader”数据

问题描述:

我是这个网站的新手,但在这里找到信息非常有帮助。我有一个问题,我将结果从sql 8 db返回到用C#编写的网站上的网格控件。结果非常大,我说的是800K行!直到几个月前它工作得很好。我不确定管理员可能用我的内存资源做了什么。所以现在我已经把这份报告限制在只有三个月的数据上,但即使如此,大约需要20分钟(在工作时)来检索任何数据。我也可以选择导出数据,所以我不能使用数据阅读器来传输数据。在临时环境中一切正常,但在生产中它没有。在这一点上,我已经没有想法。 dba说我的一个数据库问题是一个应用问题。以下是代码示例:导出“datareader”数据

// Get Data 

SqlConnection con = new SqlConnection(); 
SqlCommand cmd = new SqlCommand(); 
SqlDataAdapter da; 
DataSet ds = new DataSet(); 

con.ConnectionString = "MyConnectionString"; 
con.Open(); 

cmd.Connection = con; 
cmd.CommandType = CommandType.StoredProcedure; 
cmd.CommandText = "MyStoredProc"; 
da = new SqlDataAdapter(cmd); 
da.Fill(ds); 

con.Close(); 

StringWriter sw = new StringWriter(); 
HtmlTextWriter htw = new HtmlTextWriter(sw); 
DataGrid dg = new DataGrid(); 
dg.DataSource = ds.Tables[0]; 
dg.DataBind(); 
dg.RenderControl(htw); 

Response.ClearContent(); 
Response.ContentType = "application/vnd.ms-excel"; 
Response.AddHeader("Content-Disposition", "attachment;filename=Report.xls"); 
Response.Write(sw.ToString()); 
Response.End(); 
+1

当生活给你一个柠檬..火的DBA! – JonH 2012-01-16 18:52:09

+0

您需要向我们展示存储过程。 – JonH 2012-01-16 18:52:21

+0

您是否尝试过配置您的应用以查看在哪里花费了什么时间?您只需添加少量日志记录即可购买。 – 2012-01-16 18:52:47

您可能会在数据库或网站中超时。绝对做一些性能调优,也许看一个界面,一次只返回一小部分行。

Excel工作表上是否还有一个65k行限制?