2013-09-10 4 views
0

У меня есть h * tload отчетов на моем сервере отчетов. Большинство из них имеют план обновления кэша с использованием общего расписания. Можно ли программно установить план обновления кэша в отчете? Включение кэширования, истечение срока действия для кеша с использованием общего расписания, выполнение снимков в соответствии с общим расписанием. Все работы выполняются с использованием метода SetExecutionOptions и метода SetCacheOptions.установить время обновления кеша для отчета ssrs

Установка кэшированного Refreshplan для отчета, однако, не работает нормально. Предложения?

Редактировать: Я хотел бы сделать то же самое для всех, наборы данных задавали их для обновления по расписанию.

Ниже приведен код, я использую (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) 
} 
+0

Я смотрел на http://technet.microsoft.com/ ан-нас/библиотека/aa258083 (V = sql.80) .aspx. Похоже, что решение есть, но может ли кто-нибудь помочь мне перевести это в powershell? – Henrov

ответ

2

На самом деле нашли. Почему-то меня и нескольких моих коллег упустили из виду: CreateCacheRefreshPlan Method - это решение ...

Это не выглядит красиво (но эй, я не разработчик), а половина из них - бесстыдные рип-офф, но это сделать трюк .... :)

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

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

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