У меня есть шаблон отчета (файл .rdl) со встроенным набором данных 'X', который ссылается на общий набор данных 'Y' (файл .rsd). Оба файла находятся в одной папке.
Когда я пытаюсь сгенерировать отчет, я получаю сообщение об ошибке «Набор данных« X »относится к общему набору данных« Y », который недоступен».
Наборы данных не содержат строк, разделенных запятыми или пустых значений .
ОБНОВЛЕНИЕ (2019-06-07): в отличие от вышеизложенного, данные содержали пустые значения. Я не знал, что фильтр очищает конечный результат.
Я также позаботился о том, чтобы источник данных был общим.
Другие общие наборы данных распознаются, но это не так.
Я посмотрел на разрешения базы данных, но мне удалось без проблем выполнить запросы SQL из наборов данных в SSMS, что, по-видимому, указывает на то, что разрешения действительны. Возможно, приложению, использующему наборы данных, требуются определенные разрешения базы данных ..?
Это проблемный набор данных:
<?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 строк, была ошибка.