的SQL server 我這里用SS代替,Sql Server Analysis Service 我用SSAS代替,
這是OPENI文檔中也這么稱呼,希望大家習慣。
介紹我的環境:
windows xp pro + sp2
SS 2000 開發版(中文) + sp3a
SSAS 2000 +sp3a
XML analysis SDK 6.0
XMLA SDK 1.1
sorry我的迅雷歷史察看有問題,列不出地址了。大家自己找吧。
安裝方法可以參看openi首頁的安裝文檔,上面詳細介紹了如何安裝
注意,這里SSAS 2000 和SS用的是sp3a的補丁,openi官方稱jpivot
不支持SSAS 2000+sp4 或SS 2005,需要修改文件。修改方法看openi
的wiki,(我沒試過)。
為什么,要用SSAS 2000呢?因為SSAS 2005明確說,要使用XMLA
SOAP必須要windows 2003,配IIS 6.0,我的機器是xp,也不想裝2003所以
必須選SSAS2000,關于IIS6.0我起先想裝到xp上,下了n多的所謂的6.0 for XP
全是假的,還中了n個木馬。記住IIS6.0只有在2003上,xp上是沒有的,
openi中文檔里說的applaction pool在2003中才有,同樣web services也必須
2003上配。SSAS 2000為什么選sp3a這是openi說的,俺就不試sp4了,省的有問題
先安裝以上我列舉的軟件。
然后在IIS,管理面板中選擇,默認站點,新建虛擬目錄,目錄名為xmla指向
C:\Program Files\Microsoft XML For Analysis SDK\isapi
設置可匿名訪問該虛擬目錄,并在屬性中設置,執行權限是腳本和可執行文件。
設完后在瀏覽器中輸入:
http://localhost/xmla/msxisapi.dll
應該看到如下顯示:
<?xml version="1.0" ?>
- <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
- <SOAP-ENV:Body>
- <SOAP-ENV:Fault xmlns:XA="urn:schemas-microsoft-com:xml-analysis">
<faultcode>XA:XMLAnalysisError.88BA0800</faultcode>
<faultstring>Web 服務只支持 POST 操作。</faultstring>
<faultactor>urn:schemas-microsoft-com:xml-analysis</faultactor>
- <detail>
<Error ErrorCode="2293893120" Description="Web 服務只支持 POST 操作。" Source="urn:schemas-microsoft-com:xml-analysis" />
</detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
意思是說,xmla不支持get,必須post操作
到這里,任務完成了多半
在你的配置里,修改xmla的配置讓他指向,這里就ok了
例如morndian 中修改WEB-INF/question/xmla.jsp中
<jp:xmlaQuery id="query01"
uri="http://localhost/xmla/msxisapi.dll"
catalog="FoodMart 2000">
注意catalog是FoodMart 2000
然后到界面中,預覽就OK了。
這里有幾個問題,玩了我3天,我先列舉一些
SQL server 2005 soap必須在2003上配
IIS 6.0不能裝在XP上
SQL server 的sp補丁必須跟服務器語言版本一致,openi的是E文的不能用
不要用xmlaTest.jsp測試(我測試xmla都用這個,結果就是這個玩了我兩天)
xmlaTest.jsp發送的報文是Form的一個簡單Post,如果直接把URL,換為msxisapi.dll
就會報
<faultcode>XA:XMLAnalysisError.8007000E</faultcode>
<faultstring>處理請求時出錯。</faultstring>
Goole半天終于知道要在http請求頭中加入:
SOAPAction: "urn:schemas-microsoft-com:Discover"
對這句話解釋是:XML/A servers didn't require it, but by the "letter of the law" it should be in there.
form post的時候當然沒這個東東了。
而jpivot中發送的時候帶,看報文:
POST /xmla/msxisapi.dll HTTP/1.1^M
SOAPAction: "urn:schemas-microsoft-com:xml-analysis:Discover"^M
Content-Type: text/xml; charset="utf-8"^M
Content-Length: 429^M
Cache-Control: no-cache^M
Pragma: no-cache^M
User-Agent: Java/1.5.0.03^M
Host: 192.168.0.203:9444^M
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2^M
Connection: keep-alive^M
注意到了沒,有個SOAPAction,而testXMLA.jsp是Form提交當然沒有,
看報文頭如下:
POST /xmla/msxisapi.dll HTTP/1.1^M
User-Agent: Opera/9.01 (Windows NT 5.1; U; zh-cn)^M
Host: 192.168.0.203:9444^M
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1^M
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8^M
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1^M
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0^M
Referer: http://192.168.0.203:8444/mon/xmlaTest.jsp^M
Connection: Keep-Alive^M
Content-Length: 1134^M
Content-Type: application/x-www-form-urlencoded
所以MS的SSAS,XMLA要報那個該死的錯誤。你要不明白原理,調死你也不通。
為了這個試了N種組合,包括XMLA SDK版本降級。。。
http://www.bbker.com/D7478.html