Bonjour,

je cherche à me connecter depuis un environnement LAMP à un cube OLAP SSAS.
Le seul moyen que j'ai trouvé pour cela est de passer par XMLA (SOAP).

J'ai donc essayé de me connecter via le client SOAP proposé par l'extension PHP, avec le code suivant :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
$client = new SoapClient(NULL, array(
	"location" => "xxxxxxxxxx",
	"uri" => "urn:schemas-microsoft-com:xml-analysis"
));
 
$xml = '<Execute xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
	  <Command>
	  	  <Statement>
	  	  	  SELECT  FROM [xxxxx] WHERE ([xxxxx].[xxxxx])
	  	  </Statement>
	  </Command>
	  <Properties>
	  	  <PropertyList>
	  	  	  <Catalog>xxxxxxxxxx</Catalog>
	  	  </PropertyList>
	  </Properties>
</Execute>';
 
$result = $client->__doRequest($xml, "xxxxxxxxxx",  "Execute", 1);
var_dump($result);

La requête MDX est valable (acceptée dans SS Management Studio),
et le XMLA est valide quand on l'exécute dans l'onglet XMLA de Management Studio.

Seulement, lors de l'exécution du script PHP, j'obtient l'erreur suivante :

string(653) "<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><soap:Fault xmlns="http://schemas.xmlsoap.org/soap/envelope/"><faultcode>XMLAnalysisError.0xc10f0007</faultcode><faultstring>The Execute element at line 1, column 75 (namespace http://schemas.microsoft.com/analysi...es/2003/engine) cannot appear under .</faultstring><detail><Error ErrorCode="3238985735" Description="The Execute element at line 1, column 75 (namespace http://schemas.microsoft.com/analysi...es/2003/engine) cannot appear under ." Source="Microsoft SQL Server 2005 Analysis Services" HelpFile=""/></detail></soap:Fault></soap:Body></soap:Envelope>"

J'ai essayé de modifier de différentes façons le XML (en rajoutant l'enveloppe SOAP, en y changeant le xmlns, etc), mais j'arrive toujours à une erreur de ce type là...

Quelqu'un pourrait-il m'aider ?
Merci d'avance