我正在尝试使用URL访问从sql server reporting services 2008中提取一些报告。我需要传递的参数之一是Guid。当我只是将guid粘贴到URL中
&LoggerID=CD4869DC-68B8-4513-B3C6-0E6DD9F74380
我收到错误: 为报告参数“LoggerID”提供的默认值或值不是有效值。 (rsInvalidReportParameter)
我试过单引号,括号和大括号。我错过了什么?
答案 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格式化为小写。