Analysis Services 2005 protocol - XMLA over TCP/IP
原文参见: http://www.mosha.com/msolap/articles/as2005_protocol.htm
By Mosha Pasumansky, December 2005
【备注】mosha是微软负责SSAS的首席科学家,也是MDX之父
有心深入了解SSAS,而不是停留在工具的使用的朋友,应该了解XML/A及其相关协议层的应用(例如http,和tcp/ip)
It has been widely publicized that Analysis Services 2005 uses XML for Analysis 1.1 (XMLA) as its only network protocol for communication between client and server. XMLA is standard public protocol defined by XMLA council and full description can be found at www.xmla.org. However, while reading it, it becomes immediately clear, that the standard only discuss client server communication over HTTP only. Indeed, here is a small excerpt from the standard - "The specification is built upon the open Internet standards of HTTP, XML, and SOAP". XMLA uses SOAP and SOAP has standard binding to HTTP through the use of HTTP headers. However, while AS2005 can be configured to work over HTTP, the typical way of connecting to AS2005 is directly through TCP/IP. There is no standard binding of SOAP to TCP/IP in general, and in particular XMLA standard says nothing about it. So what we are going to do is to reveal piece by piece and layer by layer what happens on the wire when Analysis Services client (either OLEDB, ADOMD.NET or AMO) works with Analysis Services server through TCP/IP. By doing so, we will discover and discuss several important performance and security tradeoffs which are useful for tuning performance and for secure maintaining the server as well as for troubleshooting. I also have to disclose, that the TCP/IP protocol to AS is patented technology. It is not secret - because patents are public information - but it cannot be freely copied or reimplemented by 3rd party.
I will structure this article in a form of detective story. Armed with network monitor, we will intercept the communications and will analyze it. For the purpose of experiment, we will be studying the response MDX query sent to the Foodmart 2000 Sales cube migrated to Analysis Services 2005. I am using "MDX Sample" application which shipped with AS2000 instead of SQL Management Studio which shipped with AS2005. MDX Sample uses ADOMD which uses OLEDB as opposed to SQL Management Studio which uses ADOMD.NET. This is actually not the reason why I need to use MDX Sample, since both OLEDB and ADOMD.NET use exactly same wire protocol. The reason is that we will need to change some connection string properties while doing some experiments, and unfortunately it is not possible with SQL Management Studio.
So let's start by sending the following simple MDX query and watching what will come on the wire