2017-01-24 5 views
0

こんにちは、私が作成したレポートにデータソースを設定しようとしていますが、 SSRS SetItemDataSource与える例外

この

を述べたように、私は例外を取得していますすべてがある、私が使用していたコード

$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:アイテムのパス 『』 が有効でない完全なパスが小さくなければなりません。レポートサーバーがネイティブモードの場合、 のパスはスラッシュで始まる必要があります---> Microsoft.ReportingServices.Diagnostics.Utilities.InvalidItemPathException: アイテムのパスが255文字以上になる必要があります。 'は有効ではありません。完全なパスは 以下である必要があります。その他の制限が適用されます。ネイティブモードでレポートサーバーが の場合、パスはスラッシュで始まる必要があります。 Microsoft.ReportingServices.Library.ReportingService2005Impl.SetItemDataSources Microsoft.ReportingServicesで(文字列 項目、データソース[]データソース、のGUID batchId) Microsoft.ReportingServices.Library.ReportingService2005Impl.SetItemDataSourcesで(文字列 項目、データソース[]データソース)。 WebServer.ReportingService2010.SetItemDataSources(文字列 ItemPathは、データソース[]データソース)」

#ここで

答えて

1

は、私はそれが原因でこのラインの投げている理由を考え出したものです

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

これは、nullを返しているように、root (/)にデータソースパスを設定することができません

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

でなければなりません。お試しください。

+0

Thanks 'Dotnet' – Learner

関連する問題