大家好我正在尝试将数据源设置为创建的报告,但是我提到了一个异常
这是我正在使用的代码
$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)“
#
答案 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。请尝试让我知道