internal static String UpdateSync(String updeteScript, UpdateCubeArgs args)
        {
            String result = String.Empty;

            string cubeName = args.CubeName;
            string connectionString = args.ConnectionString;
            string commandText = string.Empty;

            if (string.IsNullOrEmpty(updeteScript))
            {
                commandText = string.Format(UPDATE_COMMAND_TEMPLATE, args.CubeName);
            }

            List<string> commands = new List<string>();

            for (int i = 0; i < args.Entries.Count; i++)
            {
                UpdateEntry entry = args.Entries[i];
                StringBuilder sb = new StringBuilder();
                foreach (ShortMemberInfo mi in entry.Tuple)
                {
                    if (sb.Length > 0)
                    {
                        sb.Append(',');
                    }
                    sb.Append(mi.UniqueName);
                }
                string tuple = sb.ToString();
                sb = null;

                string lexeme = Environment.NewLine;
                if (i > 0)
                {
                    if (string.IsNullOrEmpty(updeteScript))
                    {
                        lexeme += ',';
                    }
                }

                if (string.IsNullOrEmpty(updeteScript))
                {
                    lexeme += string.Format("({0}) = {1}", tuple, entry.NewValue);
                    commandText += lexeme;
                }
                else
                {
                    string cmd = updeteScript;
                    ParseHierarchies(ref cmd, entry.Tuple, entry.NewValue, entry.OldValue);
                    lexeme += cmd;
                    commands.Add(lexeme);
                }

            }

            if (string.IsNullOrEmpty(updeteScript))
            {
                commands.Add(commandText);
            }

            try
            {
                try
                {
                    //bool error = false;

                    foreach (string cmdText in commands)
                    {
                        try
                        {
                            AdomdConnection conn = AdomdConnectionPool.GetConnection(connectionString);
                            {
                                using (AdomdCommand cmd = new AdomdCommand(cmdText, conn))
                                {
                                    result = cmdText;
                                    cmd.ExecuteNonQuery();
                                }
                            }
                        }
                        catch (Exception exc)
                        {
                            //error = true;
                            throw exc;
                        }
                    }
                }
                finally
                {
                }
            }
            catch (Exception exc)
            {
                throw exc;
            }
            return result;
        }
 public static UpdateCubeArgs CreateUpdateCubeArgs(String connectionString, String cubeName, List<UpdateEntry> entries)
 {
     UpdateCubeArgs args = new UpdateCubeArgs();
     args.ConnectionString = connectionString;
     args.CubeName = cubeName;
     args.Entries = entries;
     return args;
 }