【问题标题】:SSRS: How to use XML document data source with parametersSSRS:如何使用带参数的 XML 文档数据源
【发布时间】:2019-08-17 00:36:36
【问题描述】:

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

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

https://site1/test/GetInfo/param1 或者 https://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. 在我的报告中,我创建了一个数据源,ConnectionType = 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方法。

【问题讨论】:

    标签: reporting-services


    【解决方案1】:

    我已经有一段时间没有使用 XML 数据提供程序了,但我记得 XML 数据提供程序会为任何没有文件扩展名 xml 的 URL 使用 SOAP 负载执行 POST(例如,http://www.example.com/mywebservice)。这种情况下的参数包含在SOAP request payload 中。由于您没有 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 数据集,创建 Power BI Dataset Connection in RB,然后在 Power BI 报表生成器的 DAX 查询中筛选数据(请注意,Power BI数据集连接仅在 Power BI Report Builder 和 Power BI Premium Capacities 中受支持,在 SSRS 或 PBIRS 中不支持。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-06
      • 1970-01-01
      • 1970-01-01
      • 2016-07-09
      • 1970-01-01
      相关资源
      最近更新 更多