В PHP
Использование библиотеки служб отчетов SSRS, установленной через composer с: chriskl / phpssrs «:» ^ 0.1.2
После успешного звонка CreateCatalogItem(...)
и, увидев, что отчет существует в службах отчетов SQL Server, я обнаружил ошибку (трассировка сообщений и стека перечислены ниже) при запуске SetItemDataSources(...)
,
Коллега может правильно выполнить вызов, однако в двух других средах происходит сбой с той же ошибкой. Таким образом, похоже, что это может быть проблема окружающей среды, и мы просим о любой помощи, указывающей нам, что это может быть или нет.
Состояние ошибки
«Обязательное поле Item отсутствует в структуре ввода»
поэтому мы решили, что это может быть проблемой управления версиями, когда одна версия службы SSRS ищет поле Item, а библиотека, которую мы используем, не предоставляет его.
Содержимое вызова SOAP не содержит элемента с именем Item.
Вот код, который терпит неудачу:
$connName = 'MyConnName';
$dsd = new DataSourceDefinition(
'SQL', //Extension
null, //ConnectString
true, //UseOriginalConnectString
true, //$OriginalConnectStringExpressionBased
'Integrated', //$CredentialRetrieval
false, //$WindowsCredentials
false, //$ImpersonateUser
"Specify a user name and password for data source {$connName}:", //$Prompt
null, //$UserName
null, //Password
true //Enabled
);
$ds = new DataSource(
$connName,
null,
null,
$dsd
);
$sids = new SetItemDataSources($path . $name, [$ds]);
$rs->SetItemDataSources($sids);
Это ошибка (исключение), сгенерированная из вызова:
System.Web.Services.Protocols.SoapException: обязательное поле Item отсутствует в структуре ввода. —> Microsoft.ReportingServices.Diagnostics.Utilities.MissingElementException: обязательное поле Item отсутствует в структуре ввода. на Microsoft.ReportingServices.Library.ReportingService2005Impl.SetItemDataSources (String Пункт, DataSource [] DataSources, Guid batchId) в Microsoft.ReportingServices.Library.ReportingService2005Impl.SetItemDataSources (String Пункт, DataSource [] DataSources) в Microsoft.ReportingServices.WebServer.ReportingService2010. SetItemDataSources (String ItemPath, DataSource [] DataSources)
Задача ещё не решена.
Других решений пока нет …