/// <summary>
        /// Retrieve server-side assembly configuration
        /// </summary>
        public async Task <DataTable> GetConfigurationForEngineAsync()
        {
            var command = "call {0}.GetConfiguration({1});".FormatWith(ClrAssemblyID, (int)ConfigurationType.Engine);

            Func <DataTable> function = () =>
            {
                return(AnalysisServicesHelper.ExecuteForDataTable(_connectionString, command));
            };

            using (_cancellationTokenSource = new CancellationTokenSource())
            {
                using (var task = Task.Factory.StartNew(function))
                    return(await task.ConfigureAwait(continueOnCapturedContext : false));
            }
        }
        /// <summary>
        /// Retrieve server-side assembly version
        /// </summary>
        public async Task <Version> GetVersionAsync()
        {
            var command = "call {0}.GetVersion();".FormatWith(ClrAssemblyID);

            Func <Version> function = () =>
            {
                if (AnalysisServicesHelper.ClrAssemblyInstalled(_connectionString, ClrAssemblyID))
                {
                    return(AnalysisServicesHelper.ExecuteForDataTable(_connectionString, command).ToVersion());
                }

                return(null);
            };

            using (var task = Task.Factory.StartNew(function))
                return(await task.ConfigureAwait(continueOnCapturedContext : false));
        }