Службы Reporting Services — изменение свойства параметра отчета

Я использую RDCE для своих отчетов на сервере отчетов. Чтобы мои отчеты работали, я должен установить для параметра «UsedInQuery» значение true, где по умолчанию оно равно false. Однако это не тот параметр, который можно установить во время разработки. Необходимо вручную настроить параметр после его развертывания.

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

select ItemID
,Path,Name,Description
,cast(Property as xml) as Property
,cast(Parameter as xml) as Parameter
from dbo.Catalog
where name like 'list of databases%'

А затем обновить параметр отчета с измененным значением параметра

update Catalog
set Parameter='
<Parameters>
<UserProfileState>0</UserProfileState>
<Parameter>
...
<UsedInQuery>True</UsedInQuery>
...
</Parameter>
</Parameters>'
where ItemID='someID'

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

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

Я обнаружил, что этот метод приближается к тому, что я хочу:

SetItemParameters(path, parameters)

http://msdn.microsoft.com/en-us/library/reportservice2010.reportingservice2010.setitemparameters.aspx

По сути, вышеуказанный метод делает то, что мне нужно, если я могу установить UsedInQuery параметра Я. Но при попытке изменить параметр через вышеприведенную строку ничего не изменится. Я не уверен, что я делаю не так здесь.

Вот часть моего кода, имейте в виду, что это в Borland C ++:

      NS_ReportService2010::ItemParameter *itemPar = new NS_ReportService2010::ItemParameter();
itemPar->Name = "language";
itemPar->QueryParameter = System::True;
//      itemPar->AllowBlank = true;NS_ReportService2010::ArrayOfItemParameter *itemParameters = new NS_ReportService2010::ArrayOfItemParameter();
itemParameters->set_length(1);
itemParameters->operator [](0) = itemPar;

ReportingService->SetItemParameters("/myreport", *itemParameters);

Я что-то не так делаю в своем обновлении?

РЕДАКТИРОВАТЬ:

После ответа Ron5504 я заглянул в файл журнала и получил это:

runningrequests!ReportServer_0-2!6b4!07/30/2013-13:57:39:: v VERBOSE: SoapAction: "http://schemas.microsoft.com/sqlserver/reporting/2010/03/01/ReportServer/SetItemParameters"library!ReportServer_0-2!6b4!07/30/2013-13:57:39:: v VERBOSE: Constructed Stream Factory 'StreamFactory:19aa4462-dc7a-4a19-a505-1d0a96ce7fc4' of type 'Microsoft.ReportingServices.Library.MemoryThenFileStreamFactory'
library!ReportServer_0-2!6b4!07/30/2013-13:57:39:: i INFO: Call to GetItemTypeAction(/TestReport).
library!ReportServer_0-2!6b4!07/30/2013-13:57:39:: i INFO: Call to GetItemTypeAction completed. Returns 2.
library!ReportServer_0-2!6b4!07/30/2013-13:57:39:: i INFO: Call to SetReportParametersAction(/TestReport).
library!ReportServer_0-2!6b4!07/30/2013-13:57:39:: v VERBOSE: Transaction begin.
library!ReportServer_0-2!6b4!07/30/2013-13:57:39:: i INFO: Call to SetReportParametersAction completed.
library!ReportServer_0-2!6b4!07/30/2013-13:57:39:: v VERBOSE: Transaction commit.
rshost!rshost!6b4!07/30/2013-13:57:39:: v VERBOSE: HttpPipelineCallback::EndOfRequest(): continue pipeline=0x00000002781A5AF0.
rshost!rshost!b5c!07/30/2013-13:57:39:: v VERBOSE: ThreadContinuePipeline: processing request on pipeline=0x00000002781A5AF0, state=2, IOError=0, node=0.
rshost!rshost!828!07/30/2013-13:57:43:: v VERBOSE: HttpPipeline::DisconnectCallback: releasing pipeline=0x00000002781A5AF0.
rshost!rshost!b5c!07/30/2013-13:57:43:: v VERBOSE: ThreadContinuePipeline: processing request on pipeline=0x00000002781A5AF0, state=0, IOError=2250, node=0.
rshost!rshost!b5c!07/30/2013-13:57:43:: v VERBOSE: State machine disconnected pipeline=0x00000002781A5AF0, state=4 ...
rshost!rshost!b5c!07/30/2013-13:57:43:: v VERBOSE: HttpPipeline::DoStateDisconnected: releasing pipeline=0x00000002781A5AF0.
rshost!rshost!b5c!07/30/2013-13:57:43:: v VERBOSE: HttpPipeline::ReleaseOnce: releasing pipeline=0x00000002781A5AF0.
rshost!rshost!b5c!07/30/2013-13:57:43:: v VERBOSE: Destroying pipeline=0x00000002781A5AF0, callback=0x0000000278138720 ...
library!WindowsService_0!224!07/30/2013-13:57:46:: v VERBOSE: Starting database version check timer.
library!WindowsService_0!224!07/30/2013-13:57:46:: v VERBOSE: Verifying DB version.
library!WindowsService_0!224!07/30/2013-13:57:46:: v VERBOSE: Database version check timer executed.
library!WindowsService_0!122c!07/30/2013-13:58:46:: v VERBOSE: Starting database version check timer.
library!WindowsService_0!122c!07/30/2013-13:58:46:: v VERBOSE: Verifying DB version.
library!WindowsService_0!122c!07/30/2013-13:58:46:: v VERBOSE: Database version check timer executed.

Кроме того, я хотел бы добавить, что я нашел, как это сделать в режиме конструктора. Идя к продвинутый вкладка параметра отчета. Затем вы помещаете «Обновить данные при изменении параметра:« на »Всегда обновлятьMsgstr «Тем не менее, мой вопрос остается в силе, я хочу знать, возможно ли это с помощью метода SetItemParameters.

0

Решение

SetItemParameters должен быть кстати. Вызывает ли срабатывание SetItemParameters исключение? Включить подробное ведение журнала в службах Reporting Services (http://support.microsoft.com/kb/2146315) и найдите вызов SetItemParameters в журналах ошибок служб Reporting Services. Посмотрим, вернется ли он с ошибкой.

Постскриптум Старайтесь не работать напрямую с базами данных RS, это оставляет ваш экземпляр RS неподдерживаемым. Изменение таблицы каталога также может привести к неожиданным результатам.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]