Пример #1
0
        /// <summary>
        /// Executes an XMLA command on the tabular model for the connection.
        /// </summary>
        /// <param name="server"></param>
        /// <param name="commandStatement"></param>
        /// <returns>XmlNodeList containing results of the command execution.</returns>
        public static XmlNodeList ExecuteXmlaCommand(Microsoft.AnalysisServices.Core.Server server, string catalog, string commandStatement, ref bool foundFault)
        {
            XmlWriter xmlWriter = server.StartXmlaRequest(XmlaRequestType.Undefined);

            WriteSoapEnvelopeWithCommandStatement(xmlWriter, server.SessionID, catalog, commandStatement);
            System.Xml.XmlReader xmlReader = server.EndXmlaRequest();
            xmlReader.MoveToContent();
            string fullEnvelopeResponseFromServer = xmlReader.ReadOuterXml();

            xmlReader.Close();

            XmlDocument documentResponse = new XmlDocument();

            documentResponse.LoadXml(fullEnvelopeResponseFromServer);
            XmlNamespaceManager nsmgr = new XmlNamespaceManager(documentResponse.NameTable);

            nsmgr.AddNamespace("myns1", "urn:schemas-microsoft-com:xml-analysis");
            nsmgr.AddNamespace("myns2", "urn:schemas-microsoft-com:xml-analysis:rowset");
            XmlNodeList rows = documentResponse.SelectNodes("//myns1:ExecuteResponse/myns1:return/myns2:root/myns2:row", nsmgr);

            if (rows.Count == 0 && documentResponse.GetElementsByTagName("faultcode").Count > 0)
            {
                foundFault = true;
            }

            return(rows);
        }
Пример #2
0
 public static AsServerType GetServerType(this Microsoft.AnalysisServices.Core.Server server)
 {
     if (server.CompatibilityMode == Microsoft.AnalysisServices.CompatibilityMode.PowerBI)
     {
         if (server.ServerLocation == Microsoft.AnalysisServices.ServerLocation.OnPremise)
         {
             if (server.ServerMode == Microsoft.AnalysisServices.ServerMode.SharePoint)
             {
                 return(AsServerType.PBIDesktop);
             }
             else
             {
                 return(AsServerType.PBIReportServer);
             }
         }
         else
         {
             return(AsServerType.PBIService);
         }
     }
     else
     {
         return(server.ConnectionString.IndexOf("asazure://", StringComparison.OrdinalIgnoreCase) >= 0 ||
                server.ConnectionInfo.Server.EndsWith("/xmla", StringComparison.OrdinalIgnoreCase) ||
                server.ServerLocation == Microsoft.AnalysisServices.ServerLocation.Azure ? AsServerType.AzureAS : AsServerType.SSAS);
     }
 }
Пример #3
0
        /// <summary>
        /// Finds row count for a table to display after processing.
        /// </summary>
        /// <param name="server"></param>
        /// <param name="tableName"></param>
        /// <param name="databaseName"></param>
        /// <returns>Row count.</returns>
        public static Int64 FindRowCount(Microsoft.AnalysisServices.Core.Server server, string tableName, string databaseName)
        {
            string      dax        = String.Format("EVALUATE ROW( \"RowCount\", COUNTROWS('{0}'))", tableName);
            bool        foundFault = false;
            XmlNodeList rows       = ExecuteXmlaCommand(server, databaseName, dax, ref foundFault);

            foreach (XmlNode row in rows)
            {
                XmlNode rowCountNode = null;

                foreach (XmlNode childNode in row.ChildNodes)
                {
                    //cbw not good:
                    //if (childNode.Name.Contains("RowCount"))
                    //{
                    rowCountNode = childNode;
                    //}
                }

                int result;
                if (rowCountNode != null && int.TryParse(rowCountNode.InnerText, out result))
                {
                    return(result);
                }
            }

            return(0);
        }
Пример #4
0
        public static bool IsAzure(this Microsoft.AnalysisServices.Core.Server server)
        {
            switch (server.GetServerType())
            {
            case AsServerType.AzureAS:
            case AsServerType.PBIService:
                return(true);

            default:
                return(false);
            }
        }