我有一个报告模板(.rdl文件),该模板具有一个嵌入式数据集“ X”,该数据集引用了共享数据集“ Y”(。rsd文件)。这两个文件都位于同一文件夹中。
当我尝试生成报告时,出现错误“数据集'X'指的是不可用的共享数据集'Y'。”
数据集不包含comma-separated strings或empty values。
更新(2019-06-07):与上述相反,数据确实包含空值。我没有意识到过滤器会清空最终结果。
我也确保了数据源也是共享的。
可以识别其他共享数据集,但不能识别。
我已经查看了数据库权限,但是我已经能够从SSMS中的数据集中运行SQL查询而不会出现问题,这似乎表明该权限是有效的。也许使用数据集的应用程序需要特定的数据库权限。
这是有问题的数据集:
<?xml version="1.0" encoding="utf-8"?>
<SharedDataSet xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner" xmlns="http://schemas.microsoft.com/sqlserver/reporting/2010/01/shareddatasetdefinition">
<DataSet Name="">
<Query>
<DataSourceReference>XXX</DataSourceReference>
<DataSetParameters>
<DataSetParameter Name="@Foo">
<ReadOnly>false</ReadOnly>
<Nullable>false</Nullable>
<OmitFromQuery>false</OmitFromQuery>
<rd:DbType>Object</rd:DbType>
</DataSetParameter>
</DataSetParameters>
<CommandText>***a SQL query***</Query>
<Fields>***some fields***
</Fields>
<Filters>***some filters***
</Filters>
</DataSet>
</SharedDataSet>
这个似乎没有问题:
<?xml version="1.0" encoding="utf-8"?>
<SharedDataSet xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner" xmlns="http://schemas.microsoft.com/sqlserver/reporting/2010/01/shareddatasetdefinition">
<DataSet Name="">
<Query>
<DataSourceReference>XXX</DataSourceReference>
<DataSetParameters>
<DataSetParameter Name="@FooId">
<ReadOnly>false</ReadOnly>
<Nullable>false</Nullable>
<OmitFromQuery>false</OmitFromQuery>
<rd:DbType>Object</rd:DbType>
</DataSetParameter>
<DataSetParameter Name="@BarId">
<ReadOnly>false</ReadOnly>
<Nullable>false</Nullable>
<OmitFromQuery>false</OmitFromQuery>
<rd:DbType>Object</rd:DbType>
</DataSetParameter>
</DataSetParameters>
<CommandText>***SQL QUERY***</CommandText>
</Query>
<Fields>***some fields***
</Fields>
<Filters>
<Filter>***some filters***
</Filter>
</Filters>
</DataSet>
</SharedDataSet>
更新(2019-06-06):显然,删除过滤器并确保查询不会产生空结果可修复错误。如果有过滤器,或者查询结果为空,则返回错误。我还不知道为什么会这样。
更新(2019-06-07):筛选器导致数据集返回空记录集(0行)。这似乎是导致错误的原因。在我进行的所有测试中,至少有一行数据有效并且有0行数据的情况下均显示错误。