ado.net使用从数据库中获取记录

时间:2013-03-28 12:51:21

标签: c# .net windows service ado.net

我在将数据填充到数据集中时出现此错误

try
{

    cnn.Open();

    SqlCommand cmd = new SqlCommand(temp, cnn);

    cmd.CommandTimeout = 999600000;
    cmd.CommandType = CommandType.Text;
    cmd.ExecuteNonQuery();


    DataSet ds = new DataSet();
    SqlDataAdapter dscmd = new SqlDataAdapter(cmd);

    dscmd.Fill(ds);
    dt = ds.Tables[0];

}

SQL查询包含80000条记录。

  

由于内存使用过多,会话已终止。尝试   修改查询以处理更少的行。发生严重错误   当前命令。结果(如果有的话)应该被丢弃。

1 个答案:

答案 0 :(得分:1)

这是一个SQL azure保护机制(特别是错误40553),与调用C#/ .NET / ADO.NET无关。解决这个问题的唯一方法是通过处理更少的数据来使SQL azure满意,或者至少以一种令人满意的方式来实现它。如果没有sql命令(temp)的可见性,我们就无法在这里提供。

另见Dipping My Toes Into SQL Azure – Part 2 – Protection Mechanisms

此错误有associated note on MSDN

  

减少Transact-SQL代码中的ORDER BY和GROUP BY操作数有助于减少查询的内存需求。