2013-07-29 3 views
0

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

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

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); 

ли я делаю что-то неправильно в моем обновлении?

EDIT:

После ответа на 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. 

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

ответ

0

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

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

+0

Я добавил журналы ошибок к вопросу. Я вижу только одну ошибку, строку с кодом IOEror 2250. –

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