在PHP中, 使用通过composer安装的SSRS报告服务库:chriskl / phpssrs“:”^ 0.1.2
成功调用CreateCatalogItem(...)
后,看到SQL Server Reporting Services中存在该报告,运行SetItemDataSources(...)
时遇到错误(下面列出的消息和堆栈跟踪)。
同事能够正确运行呼叫,但是其他2个环境也会因同样的错误而失败。所以这看起来可能是一个环境问题,并要求任何帮助指出我们可能是什么,或其他。
错误状态
“输入结构中缺少必填字段项”
所以我们认为它可能是一个版本问题,一个版本的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。 at Microsoft.ReportingServices.Library.ReportingService2005Impl.SetItemDataSources(String Item,DataSource [] DataSources,Guid batchId)at Microsoft.ReportingServices.Library.ReportingService2005Impl.SetItemDataSources(String Item,DataSource [] DataSources)at Microsoft.ReportingServices.WebServer.ReportingService2010。 SetItemDataSources(String ItemPath,DataSource [] DataSources)