SSRS SetItemDataSource给出异常

时间:2017-01-24 09:33:39

标签: reporting-services powershell-v4.0

大家好我正在尝试将数据源设置为创建的报告,但是我提到了一个异常

这是我正在使用的代码

$Proxy = New-WebServiceProxy -Uri $ReportingServiceUrl -UseDefaultCredential
$ReportName = "MyReport"
$path="/"
$allitems = $Proxy.ListChildren("/",$true)
#Select the newest report with correct name
$ThisReport = $allitems | where {($_.Name -eq $ReportName) } | Sort-Object ModifiedDate -Descending | Select -first 1
$datasource = $DataSourceName
$objdataSource = $Proxy.GetItemDataSources($thisreport.path)

#Generate new data source reference
$proxyNamespace = $objdataSource.GetType().Namespace
$DataSourceReference = new-object ("$proxynamespace.DataSourceReference")
$DataSourceReference.Reference = ($allitems | where {($_.Type -eq "DataSource") -and ($_.Name -eq $datasource)}).Path
$objdataSource[0].item = $DataSourceReference

Write-Verbose "Updating datasource"
$Proxy.SetItemDataSources($ThisReport.Path, $objdataSource)  //$ThisReport.Path I am getting this as /MyReport
  #      !!!!错误已经出现!!!!      #      

使用“2”参数调用“SetItemDataSources”的异常:   “System.Web.Services.Protocols.SoapException:项目的路径”   无效。完整路径长度必须少于260个字符;   其他限制适用。如果报表服务器处于纯模式,则   路径必须以斜线开头。 --->   Microsoft.ReportingServices.Diagnostics.Utilities.InvalidItemPathException:   项目''的路径不是vali d。完整路径必须小于   长260个字符;其他限制适用。如果是报表服务器   在纯模式下,路径必须以斜杠开头。在   Microsoft.ReportingServices.Library.ReportingService2005Impl.SetItemDataSources(字符串   Item,DataSource [] DataSources,Guid batchId)at   Microsoft.ReportingServices.Library.ReportingService2005Impl.SetItemDataSources(字符串   Item,DataSource [] DataSources)at   Microsoft.ReportingServices.WebServer.ReportingService2010.SetItemDataSources(字符串   ItemPath,DataSource [] DataSources)“

     #

1 个答案:

答案 0 :(得分:0)

以下是我弄清楚为什么因为这条线而投掷

$DataSourceReference.Reference = ($allitems | where {($_.Type -eq "DataSource") -and ($_.Name -eq $datasource)}).Path

这应该是

$DataSourceReference.Reference = ($allitems | where {(**$_.TypeName** -eq "DataSource") -and ($_.Name -eq $datasource)}).Path

无法将DataSource路径设置为根(/),因为它返回null。请尝试让我知道