SSRS: получить список всех отчетов и параметров за один вызов веб-службы? - PullRequest
11 голосов
/ 03 июля 2010

Короткая и приятная версия: существует ли один метод веб-службы, который бы возвращал имена всех доступных отчетов и параметры каждого отчета?

Мой веб-код (C # / MVC) подключен к веб-службе SSRS, и я могу получать отчеты с помощью этих служб.

Я знаю, что могу получить список доступных отчетов, таких как:

var rService = new ReportingService2005
{
 Url = @"http://domain.com/ReportServer/ReportService2005.asmx?wsdl",
 Credentials = System.Net.CredentialCache.DefaultCredentials
};

var reportList = rService.ListChildren(@"/Blah", true);

Результат ListChildren () дает много информации, но не перечисляет параметры для каждого отчета. Чтобы получить параметр для отчета, мне нужно сделать отдельный вызов:

string historyId = null;
ReportService.ParameterValue[] values = null;
ReportService.DataSourceCredentials[] credentials = null;

var parameters = rService.GetReportParameters(@"/Blah/" + reportName, historyId, true, values, credentials);

Поэтому, если я хочу получить все доступные отчеты и их параметры, мне нужно будет просмотреть результаты ListChildren, что означает, что я буду делать вызов веб-службы для каждого из этих отчетов.

Есть ли лучший способ сделать это?

Ответы [ 2 ]

1 голос
/ 03 июля 2010

В интерфейсе веб-сервисов такого вызова нет. В качестве альтернативы вы можете достичь чего-то подобного, напрямую запросив системные таблицы служб отчетов в БД ReportServer; но это будет зависеть от версии, и MS, вероятно, не будет поддерживать его.

При этом я использовал эти таблицы для создания нескольких специальных отчетов в прошлом. и не испытывал никаких проблем YMMV.

0 голосов
/ 29 марта 2016

Я использовал ListChildren таким образом.

ReportingService2005 rService = new ReportingService2005();
rService.Credentials = System.Net.CredentialCache.DefaultCredentials;

CatalogItem[] catalogItems = rService.ListChildren("/", true);

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

foreach (CatalogItem item in catalogItems.Where(m => m.Name.ToLower().Contains(model.ReportName.ToLower())))
{
  Your code;    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...