Использование общего источника данных для динамически генерируемых и развернутых отчетов

Я динамически генерирую RDL файлы для SSRS 2008, собираю свои отчеты из "строительных блоков", которые я определил как отчеты на сервере отчетов, и которые я использую в качестве подписок для моего сгенерированного отчета.

На моем сервере отчетов у меня есть один общий источник данных, который работает, пока я запускаю файл непосредственно на сервере отчетов.

Я пытаюсь выполнить следующее:

  • Мой сгенерированный основной отчет должен ссылаться на общий источник данных
  • В моих подписях, содержащихся в сгенерированном основном отчете, должен также использоваться тот же источник данных
  • После развертывания отчета для сервера отчетов с использованием интерфейса webservice, я хотел бы иметь возможность фактически увидеть отчет сразу.

В настоящее время я могу генерировать и проверять мой RDL просто отлично, я могу также развернуть его на сервере отчетов - он появляется и все отлично.

Но когда я пытаюсь просмотреть отчет, я получаю сообщение об ошибке, что мой источник данных недействителен или был удален или что-то.......

Что мне не хватает? Я уверен, что у меня есть правильный источник данных - GUID для него и всех - и имена соответствуют. Как сообщить генерируемому RDL использовать общий источник данных, уже присутствующий на сервере?

Ответ 1

Отвечая на мой собственный вопрос здесь, надеясь, что кто-то другой найдет это полезным:

Я был под (ложным) впечатлением, что уникального "DataSourceID", предоставленного источнику данных на сервере, было бы достаточно, чтобы однозначно идентифицировать его.

Итак, в моем созданном RDL у меня было что-то вроде:

  <DataSources>
    <DataSource Name="MyDataSource">
      <Transaction>true</Transaction>
      <DataSourceReference>MyDataSource</DataSourceReference>
      <rd:DataSourceID>6ba7c588-e270-4de9-988c-d2af024f10e1</rd:DataSourceID>
      <rd:SecurityType>None</rd:SecurityType>
    </DataSource>
  </DataSources>

Теперь это работало один раз, когда мой источник данных действительно назывался "MyDataSource" и находился в том же каталоге, что и мой отчет, который я опубликовал через API RS WebService.

Как только я переместил источник данных в другое место, он перестал работать.

РЕШЕНИЕ:
Это может показаться глупым, но на самом деле я не получил его сначала: DataSourceReference должен иметь полный и полный "путь" на сервере отчетов к тому источнику данных, который я хочу использовать. Просто указать уникальный идентификатор не будет...

Итак, как только я изменил свой RDL на:

  <DataSources>
    <DataSource Name="MyDataSource">
      <Transaction>true</Transaction>
      <DataSourceReference>/MyProject/DataSources/MyDataSource</DataSourceReference>
      <rd:DataSourceID>6ba7c588-e270-4de9-988c-d2af024f10e1</rd:DataSourceID>
      <rd:SecurityType>None</rd:SecurityType>
    </DataSource>
  </DataSources>

(обратите внимание на <DataSourceReference>/MyProject/DataSources/MyDataSource</DataSourceReference>)

с этого момента он работает как шарм.

Надеюсь, кто-нибудь однажды найдет это полезным!