将Guid传递给SSRS 2008 Url Access参数

时间:2009-08-13 23:18:57

标签: reporting-services

我正在尝试使用URL访问从sql server reporting services 2008中提取一些报告。我需要传递的参数之一是Guid。当我只是将guid粘贴到URL中

&LoggerID=CD4869DC-68B8-4513-B3C6-0E6DD9F74380

我收到错误: 为报告参数“LoggerID”提供的默认值或值不是有效值。 (rsInvalidReportParameter)

我试过单引号,括号和大括号。我错过了什么?

5 个答案:

答案 0 :(得分:3)

我刚遇到这个问题,结果证明Guid中的字母大写有问题。

由于SSRS不理解uniqueidentifier,因此它只将它们视为字符串。因此,如果您为该参数提供了“从查询中获取值”选项,则传入的url参数必须与字符的查询结果字符匹配。意义匹配大写

在我的网址

时失败了
&entityIdentifier=75745B11-09B8-4BF6-98EF-F3E8A2ACEC05

但是当我改为

时工作
&entityIdentifier=75745b11-09b8-4bf6-98ef-f3e8a2acec05

答案 1 :(得分:2)

事实证明,当您将参数的可用值设置为“从查询中获取值”时,它将不接受URL中的guid。一旦我关闭它,它就有效。这似乎只是GUID的一个问题,因为我用一个整数这样做,它工作正常。

相关:2008仍然使用string作为参数类型。

答案 2 :(得分:1)

将该格式的Guid传递给我自己的报告之一可以正常工作。

我注意到您的错误消息是关于名为“LoggerID”的参数,但您的URL使用“guid”作为参数名称。这不是那么简单吗?

另请注意(根据我的经验)SSRS URL参数区分大小写。如果您在URL上传递“loggerid = ...”并且您的参数被称为“LoggerID”,那么您将收到一条错误消息(虽然这不是您描述的错误,因此我怀疑这是问题所在。)

<强>更新

我刚刚在设计模式中查看了我的报告,它实际上使用“String”作为参数类型。在SSRS 2005中,没有使用Guid的选项。这可能是你的选择(将参数更改为字符串并在查询中强制转换),尽管它有点像黑客。

答案 3 :(得分:0)

我刚尝试通过URL传递GUID参数时遇到了问题。我的解决方案是将uniqueidentifier转换为用于参数的可用值的数据集查询中的varchar(36)。然后,和其他人一样,有必要确保URL中GUID的大小与可用值数据集中的大小写匹配。

可用值数据集查询示例:

SELECT CAST(MyGuidColumn AS varchar(36)) AS MyGuidColumn, MyLabelColumn
FROM  MyTable

答案 4 :(得分:0)

我有几次遇到同样的问题,出于某种原因,URL中的Guid必须是小写,否则它将不接受它。

确保您的Guid格式化为小写。