SQL Server子查询填充DataSet时报500内部错误的解决办法

Posted 寻找薛定谔的猫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server子查询填充DataSet时报500内部错误的解决办法相关的知识,希望对你有一定的参考价值。

运行环境为Visual Studio 2010,数据库为SQL Server 2008。

执行下面SQL语句

SELECT SubsiteId, SubsiteTitle, count(CollectionID) CollectionNumber,count(LName) PlantNumber
   FROM (SELECT DISTINCT SubsiteId, SubsiteTitle, CollectionID, LName, CName
              FROM Cumplag_Garden_Plants where lname=Agave sisalana) 
group by SubsiteId, SubsiteTitle

在企业管理器中运行正常,可以查询到结果,但是放在程序中却始终提示500内部错误。以下是C#代码:

1 SqlConnection conn = new SqlConnection(strConn);
2 SqlCommand cmd = new SqlCommand(sql, conn);
3 conn.Open();
4 SqlDataAdapter sda = new SqlDataAdapter(cmd);
5 sda.Fill(ds, "ds");  //这里出错
6 conn.Close();

对代码try catch也捕获不到异常。


解决方法:只要将内部子查询添加一个别名即可。

SELECT  q.SubsiteId, q.SubsiteTitle, count(q.CollectionID) CollectionNumber,count(q.LName) PlantNumber
    FROM (SELECT DISTINCT SubsiteId, SubsiteTitle, CollectionID, LName, CName
             FROM Cumplag_Garden_Plants where lname=Agave sisalana) q
group by SubsiteId, SubsiteTitle

 


以上是关于SQL Server子查询填充DataSet时报500内部错误的解决办法的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SQL Server 中的 UPDATE 查询的子查询中引用表变量

带有相关子查询的 While 循环的 SQL Server 性能调整

SQL Server的高级知识

SQL Server int 转换忽略子查询?

sql server根据一级分类查询所有子级分类

从上面的值填充列值,直到它在SQL Server中达到新值