public DataTable Discover(string request, string restrictions, string properties)
        {
            Context.TraceEvent(100, 0, "Discover: Starting (" + request + ")");

            XmlaClient client = createXmlaClientAndConnect();
            DataTable  dt     = new DataTable();

            // if no properties restriction is specified, default to using
            // the current database
            if (properties.Length == 0)
            {
                properties = string.Format("<CATALOG>{0}</CATALOG>", Context.CurrentDatabaseName);
            }
            try
            {
                string res;
                TimeoutUtility.XmlaClientDiscover(client, request, restrictions, properties, out res, false, false, false);

                dt = createDataTableFromXmla(res);
            }
            finally
            {
                client.Disconnect();
                Context.TraceEvent(100, 0, "Discover: XML/A Connection disconnected");
            }
            Context.TraceEvent(100, 0, "Discover: Finished (" + dt.Rows.Count.ToString() + " rows returned");
            return(dt);
        }
        public DataTable DiscoverXmlMetadataFull(string path, string whereClause, string restrictions)
        {
            XmlaClient xmlac = createXmlaClientAndConnect();
            string     xmlaResult;
            string     properties = "";

            TimeoutUtility.XmlaClientDiscover(xmlac, "DISCOVER_XML_METADATA", restrictions, properties, out xmlaResult, false, false, false);

            XmlaDiscoverParser dp  = new XmlaDiscoverParser();
            XmlDocument        doc = new XmlDocument();

            doc.LoadXml(xmlaResult);
            return(dp.Parse(doc, path, Context.ExecuteForPrepare, whereClause));
        }