symfony — учетные данные источника данных Php-SSRS

Я использую стороннее расширение в Symfony для подключения к SSRS: https://github.com/ChartBlocks/php-ssrs

Мне нужно сохранить мой источник данных SSRS как «запрос на ввод учетных данных», поскольку мы также используем другое решение, которое требует этого, но я не уверен, как установить DataSourceCredentials в моем решении. Я получаю сообщение об ошибке: System.Web.Services.Protocols.SoapException: один или несколько учетных данных источника данных, необходимых для запуска отчета, не были указаны.

Вот мой код в моем контроллере:

$options = [
'username' => $this->getParameter('ssrs_user'),
'password' => $this->getParameter('ssrs_password')
];

$ssrs = new SSRS\Report($this->getParameter('ssrs_server'), $options);
$result = $ssrs->loadReport($this->getParameter('ssrs_base').'/'.$request->get('report'));

$ssrs->setSessionId($result->executionInfo->ExecutionID);
$parameters = json_decode($request->get('parameters'),true);
$ssrs->setExecutionParameters(new SSRS\Object\ExecutionParameters($parameters));

$output = $ssrs->render('HTML4.0'); // PDF | XML | CSV | HTML4.0 | Excel
return $output;

Кто-нибудь знает, что мне нужно добавить, чтобы передать DataSourceCredentials?

0

Решение

Нашел ответ, создав собственный метод в файле Report.php, пока он не обновится в ядре:

public function setDataSourceCredentials($datasource,$username,$password) {
$this->checkSessionId();

$options = array(
'Credentials' => array(
'DataSourceCredentials' => array(
'DataSourceName' => $datasource,
'UserName' => $username,
'Password' => $password
)
)
);

$result = $this->getSoapExecution()->SetExecutionCredentials($options);
return new ExecutionInfo($result);
}

Я вызываю это в моем контроллере перед рендерингом отчета:

$ssrs->setExecutionParameters(new SSRS\Object\ExecutionParameters($parameters));
$ssrs->setDataSourceCredentials($this->getParameter('ssrs_datasource'),$this->getParameter('ssrs_sql_user'),$this->getParameter('ssrs_sql_password'));
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]