C# “出口”;“数据阅读器”;数据

C# “出口”;“数据阅读器”;数据,c#,.net,C#,.net,我是这个网站的新手,但是发现这里的信息非常有用。我遇到了一个问题,我将sql 8 db的结果返回到网站上用C#编写的网格控件。结果非常大,我说的是800K行!直到几个月前,它还运转良好。我不确定管理员会如何利用我的内存资源。因此,现在我将报告限制为仅包含三个月的数据,但即使如此,检索任何数据也需要大约20分钟(工作时)。我还可以选择导出数据,因此我不能使用数据读取器来流式传输数据。在登台环境中,一切正常,但在生产环境中则不然。在这一点上,我想不起来了。dba说这是一个应用程序问题,我说这是一个数

我是这个网站的新手,但是发现这里的信息非常有用。我遇到了一个问题,我将sql 8 db的结果返回到网站上用C#编写的网格控件。结果非常大,我说的是800K行!直到几个月前,它还运转良好。我不确定管理员会如何利用我的内存资源。因此,现在我将报告限制为仅包含三个月的数据,但即使如此,检索任何数据也需要大约20分钟(工作时)。我还可以选择导出数据,因此我不能使用数据读取器来流式传输数据。在登台环境中,一切正常,但在生产环境中则不然。在这一点上,我想不起来了。dba说这是一个应用程序问题,我说这是一个数据库问题。以下是代码示例:

// 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!您需要向我们显示存储过程。您是否尝试配置您的应用程序以查看在哪里花费了多少时间?你只需添加几个日志语句就可以做到这一点。还有,你为什么不使用
语句呢?您如何清理或处置这些物品?您应该使用
语句将con对象、cmd对象和任何读取器包装在
中。你应该创建一个真正的excel文件,而不是这个巨大的html表格。我推荐。