2013-05-03 3 views
0

Я пытаюсь использовать SSRS в ситуации с несколькими арендаторами. Базовой версией, которую мы хотим поддержать, является SQL Server 2008, но если R2 необходим, мы можем быть в порядке.Как добавить встроенный источник данных в RDL в коде C#?

В настоящее время я использую конечную точку ReportingService2005.asmx, которая, как представляется, раскрывает класс ReportService2005SoapClient (хотя все образцы, похоже, показывают класс ReportingService2005).

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

я получил, насколько:

  1. получение RDL с сервера

  2. модификации XML, чтобы добавить DataSource

  3. указывая наборы данных, чтобы указать на новый источник данных

... но когда я пытаюсь "Crea teReport»Я получаю следующее сообщение об ошибке:

System.Web.Services.Protocols.SoapException: The dataset ‘DataSet1’ refers to the data source “mydatasource_LOCAL”, which does not exist.
at Microsoft.ReportingServices.Library.ReportingService2005Impl.ExecuteBatch(Guid batchId)
at Microsoft.ReportingServices.WebServer.ReportingService2005.ExecuteBatch()

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

(В стороне, я знаю, что MS Dynamics поддерживает многозначные SSRS в одном экземпляре, но я не вижу никакой информации о том, как они это сделали. Если у них есть какой-либо код или что-то, что они разделяют, кто-то может указать мне на это быть прекрасным.)

ответ

1

Вы используете правильную конечную точку, более или менее. От MSDN:

The ReportService2005 and ReportService2006 endpoints are deprecated in SQL Server 2008 R2. The ReportService2010 endpoint includes the functionalities of both endpoints and contains additional management features.

В любом случае вы упоминаете вы изменяете RDL использовать новый источник данных на этапе 2. Я мог бы быть неправильно, но я думаю, что вы, вероятно, еще нужно добавить DataSource элемент в отчет с использованием метода ReportingService2010CreateDataSource(...).

Если вы разворачиваете новый отчет из Visual Studio для сервера отчетов, он также упоминает в журнале, что он развертывает источник данных до развертывания отчета.

Конечно, вы также можете создать этот источник данных на сервере заранее, используя диспетчер отчетов (хотя «mydatasource_LOCAL» может быть не идеальным именем).

+0

Я не вижу, чтобы он развертывал источник данных, когда я использую встроенный источник данных в отчете, только когда я создаю общие источники данных. Я дважды проверю, чтобы быть уверенным. (Да, используя эту конечную точку, потому что нам нужно поддерживать SQL Server 2008 и выше). – PilotBob

+0

Он появляется, когда я развертываю отчет, источник данных создается в dman reportmanager. Он имеет идентификатор элемента, соответствующий отчету. Но как я могу получить элемент отчета, который я не могу создать inorder для создания созданного источника? – PilotBob

+0

Кажется, мне не пришлось даже модифицировать RDL. Просто клонируйте отчет, а затем используйте SetItemDataSources, который создал встроенный источник данных для отчета. – PilotBob

Смежные вопросы