Sql server Where子句中的强制转换错误

Sql server Where子句中的强制转换错误,sql-server,sql-server-2008,tsql,reporting-services,ssrs-2008,Sql Server,Sql Server 2008,Tsql,Reporting Services,Ssrs 2008,在下面的查询中,我不断遇到此错误: Cannot read the next data row for the dataset DataSetProject. (rsErrorReadingNextDataRow) 这似乎是where子句,如果我去掉它,它似乎起作用了。因此,我在where子句中添加了一个cast,但运气不佳。我需要在where子句中做一些特殊的事情来让它工作吗?仅供参考,这是一个从url中提取id的报告 SELECT new_projects.new_projectsId A

在下面的查询中,我不断遇到此错误:

Cannot read the next data row for the dataset DataSetProject. (rsErrorReadingNextDataRow)
这似乎是where子句,如果我去掉它,它似乎起作用了。因此,我在where子句中添加了一个cast,但运气不佳。我需要在where子句中做一些特殊的事情来让它工作吗?仅供参考,这是一个从url中提取id的报告

SELECT new_projects.new_projectsId AS ProjectId
     , new_projects.new_name AS ProjectName
     , new_projects.new_Description AS ProjectDescription

FROM
    new_projects
    LEFT OUTER JOIN new_projectsteps
        ON new_projects.new_projectsId = new_projectsteps.new_ProjectSteps2Id
    LEFT OUTER JOIN Task
        ON new_projectsteps.new_projectstepsId = Task.RegardingObjectId
WHERE
(new_projects.new_projectsId = cast(@id AS UNIQUEIDENTIFIER))
谢谢

编辑:

SQL中的id是唯一标识符,@id的值是从querystring(url)中提取的。所以它看起来像:
&id='BC02ABC0-A6A9-E111-BCAD-32B731EEDD84'


很抱歉丢失了信息。

我怀疑单引号正在通过。因此,要么在传递给参数之前将它们剥离出来,要么使用:

WHERE new_projects.new_projectsId = CONVERT(UNIQUEIDENTIFIER, REPLACE(@id, '''', ''));
如果在GUID包含其他字符时尝试直接比较,则应获得:

Msg 8169,16级,状态2,第1行
转换失败 从字符串转换为唯一标识符


如果不是这样,那么不要说“SQL中的id是唯一标识符”-显示所有代码,以便我们可以尝试重现问题。

如果没有强制转换,为什么要强制转换?
@id
的值是多少?如果没有演员阵容,它将无法工作。它在没有while-where语句的情况下工作。我们不知道
new\u projectsId是什么(什么类型),也不知道您作为
@id
传递的是什么-我们怎么知道如何告诉您修复它;如果您希望我们为您提供帮助,请提供相关信息。因此,请显示
@id
的声明以及如何填充该声明。