SSRS:如何将 XML 文档数据源与参数一起使用



我正在尝试创建一个具有 XML 数据源的 SSRS 报告,但卡住了。

我有一个接受参数的 URL(下面,参数名为Id,值为param1(并返回以下 XML 数据:

https://site1/test/GetInfo/param1https://site1/test/GetInfo?Id=param1

<Contract xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Dynamics.Ax.Application">
<Id>param1</Id>
<City>Los Angeles</City>
<Country>USA</Country>
<Customer>Customer1</Customer>
<State>WA</State>
<Street>150 Main Street</Street>
<Zip>99999</Zip>
</Contract>

这本身不是一个 Web 服务,因为它只是在 URI 上接受参数/查询,所以我相信这是一个 XML 文档。

在 SSRS 2016 报表生成器中,我执行以下操作:

  1. 在我的报表中,我创建了一个数据源,其中 连接类型 =XML和 连接字符串 =https://site1/test/GetInfo
  2. 创建了一个指向上述数据源的数据集,查询类型 =Text,如下所示:
<Query>
<Method Namespace="http://schemas.datacontract.org/2004/07/Dynamics.Ax.Application" Name="GetInfo">
<Parameters>
<Parameter Name="Id">
<DefaultValue>DefaultValue1</DefaultValue>
</Parameter>
</Parameters>
</Method> 
</Query>

单击"确定"按钮完成数据集后,出现以下错误:

Could not create a list of fields for the query. Verify that you can connect to the data source and that your query syntax is correct.
Failed to execute web request for the specified URL.
Method Not Allowed: The remote server returned an error: (405) Method Not Allowed.
The remote server returned an error: (405) Method Not Allowed.
<Error><Message>The requested resource does not support http method 'POST'.</Message></Error>

查询中的方法名称映射到类中的实际方法名称,并且操作是GET方法。

自从我玩XML数据提供程序以来已经有一段时间了,但我记得XML数据提供程序将为任何没有文件扩展xml名的URL执行SOAP有效负载的POST(例如,http://www.example.com/mywebservice(。在这种情况下,参数包含在 SOAP 请求有效负载中。由于您没有 Web 服务,因此您的服务器可能不支持 HTTP 请求上的 POST 方法,这可能是您收到405 Method not allowed错误的原因。

如果 URL 中的扩展名为xml,则 XML 数据提供程序将执行 GET 请求,并将参数包含在 URL 的查询字符串中(例如,http://www.example.com/mywebservice/myfile.xml?name=Joe(。

如果您没有办法在服务器上处理这些参数,那么返回整个 XML 数据并执行表筛选器可能会更容易。

或者,如果你有 Power BI Pro 帐户,则可以从 XML 数据创建 Power BI 数据集,在 RB 中创建 Power BI 数据集连接,然后在 Power BI报表生成器中的 DAX 查询中筛选数据(请注意,Power BI 报表生成器和 Power BI 高级容量仅支持 Power BI 数据集连接。 不在 SSRS 或 PBIRS 中(。

最新更新