установить расписание обновления кеша для отчета ssrs

У меня куча отчетов на моем сервере отчетов. У большинства из них есть план обновления кэша, использующий общее расписание. Можно ли программно задать план обновления кэша для отчета? Включение кэширования, установка срока действия кэша с использованием общего расписания, запуск моментальных снимков в соответствии с общим расписанием — все работает нормально, используя методы 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) 
}

person Henrov    schedule 10.09.2013    source источник
comment
Я просматривал technet.microsoft.com/ en-us/library/aa258083(v=sql.80).aspx. Похоже, решение есть, но может ли кто-нибудь помочь мне перевести это на powershell?   -  person Henrov    schedule 13.09.2013


Ответы (1)


Собственно нашел. Как-то я и несколько моих коллег упустили это из виду: метод CreateCacheRefreshPlan - это решение...

Это выглядит некрасиво (но эй, я не разработчик), и половина из них - бессовестные грабежи, но это ДЕЛАЕТ свое дело.... :)

Thnx и kudo всем людям, которые разместили лакомые кусочки, которые мне нужны...

$reportServerURI = "http://localhost/Reportserver"
$ReportPathWildCard = "/";
$NameSharedSchedule="NAME OF SCHEDULE";

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



# Wat dingen voorbereiden
#delivery Extension
   #$setting = "Report Server Email"
   $matchdata = $NeverExpireScheduleID
   $description = "Automatisch ingesteld op " + $NameSharedSchedule
   $eventtype = "RefreshCache"
   $parameters

#get all needed items
$items = $RS.ListChildren($ReportPathWildCard, $true)  | Where-Object {"Dataset" -contains $_.TypeName} 
#process all items
foreach ($item in $items) {
    $xpath = $item.path
    $xtype = $item.TypeName
    Write-Host "Processing $xtype $xpath"

    $report = $xpath


    ##SET Cache
    $r= $RS.SetCacheOptions( $xpath,[System.Management.Automation.Language.NullString]::Value, $o) 

  $r= $RS.CreateCacheRefreshPlan(   $report,
                                    $description,
                                    $eventtype,
                                    $matchdata,
                                    $parameters
                                    )

}
person Henrov    schedule 13.09.2013