导出“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();
答
您可能会在数据库或网站中超时。绝对做一些性能调优,也许看一个界面,一次只返回一小部分行。
Excel工作表上是否还有一个65k行限制?
当生活给你一个柠檬..火的DBA! – JonH 2012-01-16 18:52:09
您需要向我们展示存储过程。 – JonH 2012-01-16 18:52:21
您是否尝试过配置您的应用以查看在哪里花费了什么时间?您只需添加少量日志记录即可购买。 – 2012-01-16 18:52:47