У меня куча отчетов на моем сервере отчетов. У большинства из них есть план обновления кэша, использующий общее расписание. Можно ли программно задать план обновления кэша для отчета? Включение кэширования, установка срока действия кэша с использованием общего расписания, запуск моментальных снимков в соответствии с общим расписанием — все работает нормально, используя методы SetExecutionOptions и SetCacheOptions.
Однако установка кэшированного плана обновления для отчета НЕ работает нормально. Предложения?
изменить: я хотел бы сделать то же самое для всех наборов данных, чтобы они обновлялись по общему расписанию.
Ниже приведен код, который я использую (Powershell V3)
$reportServerURI = "http://localhost/Reportserver"
$ReportPathWildCard = "/SOME/FOLDER/ON/SERVER";
$NameSharedSchedule="NAMEOFSCHEDULE";
# init WS proxy
$reportServerURI2010 = "$reportServerURI/ReportService2010.asmx?WSDL"
$RS = New-WebServiceProxy -Uri $reportServerURI2010 -UseDefaultCredential
$proxyNamespace = $RS.GetType().Namespace
#Get Schedule Reference
$NeverExpireSchedule= $RS.ListSchedules([System.Management.Automation.Language.NullString]::Value) | where {$_.Name -eq "$NameSharedSchedule"}
$NeverExpireScheduleID = $NeverExpireSchedule.scheduleid;
$NeverExpireDescription = $NeverExpireSchedule.Description;
$NeverExpireDefinition = $NeverExpireSchedule.Definition;
Write-Host "Found Shared Schedule: '$NameSharedSchedule' with id $NeverExpireScheduleID and definition $NeverExpireDescription";
$NeverExpireScheduleRef =New-Object("$proxyNamespace.ScheduleReference");
$NeverExpireScheduleRef.ScheduleID=$NeverExpireScheduleID;
#get all needed items
$items = $RS.ListChildren($ReportPathWildCard, $true) | Where-Object {"Report" -contains $_.TypeName}
#process all items
foreach ($item in $items) {
$xpath = $item.path
$xtype = $item.TypeName
Write-Host "Processing $xtype $xpath"
##SET Refresh
$r= $RS.SetExecutionOptions( $xpath,"Snapshot",$NeverExpireDefinition)
}