public static void Main(string[] args) { string varFileXML = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\process.xml"; string varKey = @" Доступнi ключi: /XML:process.xml /Server:localhost /DB:dw_olap /Cube: /Step:0 /PARALLEL:8 /Metod:0 /XMLA: 1 - процесити через XMLA, 0 - не використовувати XMLA для не INDEX процесінга /Metod:0 - ігнорувати помилки ключі з конвертацією, 1 - пробувувати без ігнорування /DAY: - за скільки днів перепроцешувати куби за замовчуванням 20 /STATE (:2) - Показує стани кубів. :2-Розширена інформація /DATESTART:DD.MM.YYYY - З Якої дати процесити партіциї. /PROCESSDIMENSION: - (NONE,UPDATE,FULL) По замовчуванню UPDATE /PROCESSCUBE: - (NONE,DATA,FULL) По замовчуванню FULL /ARX:01.01.2012 - Процесити в режимі архів. (З якої дати розширювати партиції) дата не обов'язковий параметр. /DAYPROCESS:20 - за скільки днів перепроцешувати партіциї (Переважає значення з налаштувань Виміру) "; //Перевіряємо чи є в параметрах XML файл for (int i = 0; i < args.Length; i++) { if (args[i].ToUpper().StartsWith("/XML:")) { varFileXML = args[i].Substring(5); } else if (args[i].ToUpper().StartsWith("/STEP:")) { GlobalVar.varStep = Convert.ToInt32(args[i].Substring(6)); } } //Перевіряємо наявність XML файла if (File.Exists(varFileXML)) { MyXML myXML = new MyXML(varFileXML); GlobalVar.varServer = (myXML.GetVar("Server") == null? GlobalVar.varServer : myXML.GetVar("Server")); GlobalVar.varDB = (myXML.GetVar("Database") == null? GlobalVar.varDB : myXML.GetVar("Database")); //GlobalVar.varStep = ( myXML.GetVar("DefaultStep") == null? GlobalVar.varStep : Convert.ToInt32( myXML.GetVar("DefaultStep")) ); GlobalVar.varMaxParallel = (myXML.GetAttribute("maxParallel", "XMLA") == null ? GlobalVar.varMaxParallel : Convert.ToInt32(myXML.GetAttribute("maxParallel", "XMLA"))); GlobalVar.varConectSQL = myXML.GetVar("ConectSQL"); GlobalVar.varKeyErrorLogFile = (myXML.GetVar("KeyErrorLogPath") == null ? GlobalVar.varKeyErrorLogFile :myXML.GetVar("KeyErrorLogPath") + "\\Error_" + DateTime.Now.ToString("yyyyMMdd") + ".log"); if (myXML.GetVar("Step" + GlobalVar.varStep.ToString().Trim(), "ProcessDimension") != null) { MyXMLA.SetProcessTypeDimension(myXML.GetVar("Step" + GlobalVar.varStep.ToString().Trim(), "ProcessDimension")); } GlobalVar.varPrepareSQL = myXML.GetVar("Step" + GlobalVar.varStep.ToString().Trim(), "PrepareSQL"); GlobalVar.varWaitSQL = myXML.GetVar("Step" + GlobalVar.varStep.ToString().Trim(), "WaitSQL"); GlobalVar.varTimeStart = (myXML.GetAttribute("Start", "Step" + GlobalVar.varStep.ToString().Trim(), "Time") == null ? GlobalVar.varTimeStart : Convert.ToInt32(myXML.GetAttribute("Start", "Step" + GlobalVar.varStep.ToString().Trim(), "Time"))); GlobalVar.varTimeEnd = (myXML.GetAttribute("End", "Step" + GlobalVar.varStep.ToString().Trim(), "Time") == null ? GlobalVar.varTimeEnd : Convert.ToInt32(myXML.GetAttribute("End", "Step" + GlobalVar.varStep.ToString().Trim(), "Time"))); GlobalVar.varRestartServicesOlap = (myXML.GetVar("Step" + GlobalVar.varStep.ToString().Trim(), "RestartServicesOlap") == null ? GlobalVar.varRestartServicesOlap : Convert.ToInt32(myXML.GetVar("Step" + GlobalVar.varStep.ToString().Trim(), "RestartServicesOlap"))); GlobalVar.varServicesOlap = (myXML.GetVar("ServicesOlap") == null ? GlobalVar.varDB : myXML.GetVar("ServicesOlap")); } // string var= GlobalVar.varProcessDimension; //Параметри з командного рядка мають перевагу. for (int i = 0; i < args.Length; i++) { if (args[i].ToUpper().StartsWith("/SERVER:")) { GlobalVar.varServer = args[i].Substring(8); } else if (args[i].ToUpper().StartsWith("/DB:")) { GlobalVar.varDB = args[i].Substring(4); } else if (args[i].ToUpper().StartsWith("/CUBE:")) { GlobalVar.varCube = args[i].Substring(6); } else if (args[i].ToUpper().StartsWith("/STEP:")) { GlobalVar.varStep = Convert.ToInt32(args[i].Substring(6)); } else if (args[i].ToUpper().StartsWith("/PARALLEL:")) { GlobalVar.varMaxParallel = Convert.ToInt32(args[i].Substring(10)); } else if (args[i].ToUpper().StartsWith("/XML:")) { GlobalVar.varFileXML = args[i].Substring(5); } else if (args[i].ToUpper().StartsWith("/DAY:")) { GlobalVar.varDayProcess = Convert.ToInt32(args[i].Substring(5)); } else if (args[i].ToUpper().StartsWith("/STATE:2")) { GlobalVar.varStep = -9998; } else if (args[i].ToUpper().StartsWith("/STATE")) { GlobalVar.varStep = -9999; } else if (args[i].ToUpper().StartsWith("/DATESTART:")) { GlobalVar.varDateStartProcess = DateTime.Parse(args[i].Substring(11)); } else if (args[i].ToUpper().StartsWith("/DAYPROCESS:")) { GlobalVar.varDayProcess = Convert.ToInt32(args[i].Substring(12)); } else if (args[i].ToUpper().StartsWith("/PROCESSDIMENSION:")) { MyXMLA.SetProcessTypeDimension(args[i].Substring(17)); } else if (args[i].ToUpper().StartsWith("/PROCESSCUBE:")) { MyXMLA.SetProcessTypeCube(args[i].Substring(13)); } else if (args[i].ToUpper().StartsWith("/ARX")) { GlobalVar.varIsArx = true; if (args[i].ToUpper().Length == 14) { GlobalVar.varArxDate = DateTime.ParseExact(args[i].ToUpper().Substring(5), "dd.MM.yyyy", CultureInfo.InvariantCulture); } } else if (args[i].ToUpper().StartsWith("/?")) { Console.Write(varKey); Console.ReadKey(true); return; } else { Console.Write("Колюч=>" + args[i].ToUpper() + " невірний. " + varKey); Console.ReadKey(true); return; } } GlobalVar.varFileLog = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\log\\process_" + GlobalVar.varDB.Trim() + "_" + DateTime.Now.ToString("yyyyMMdd") + "_" + GlobalVar.varStep.ToString().Trim() + ".txt"; Log.log("START=> /Server:" + GlobalVar.varServer + " /DB:" + GlobalVar.varDB + " /CUBE:" + GlobalVar.varCube + " /Step: " + GlobalVar.varStep.ToString()); if (1 == 0 && GlobalVar.varServicesOlap.Trim().Length > 0) { var varService = new Services(GlobalVar.varServicesOlap, GlobalVar.varServer); if (!varService.IsStart() || GlobalVar.varRestartServicesOlap == 1 || GlobalVar.varRestartServicesOlap == 3) { if (varService.IsStart()) { Log.log("Try ReStart =>" + GlobalVar.varServicesOlap + " in " + GlobalVar.varServer); if (!varService.ReStart()) { Log.log("No ReStart =>" + GlobalVar.varServicesOlap + " in " + GlobalVar.varServer + "\n" + varService.log); return; } else { Log.log("ReStart OK"); } } else { if (!varService.Start()) { Log.log("Try start =>" + GlobalVar.varServicesOlap + " in " + GlobalVar.varServer); if (!varService.Start()) { Log.log("No start =>" + GlobalVar.varServicesOlap + " in " + GlobalVar.varServer + "\n" + varService.log); return; } else { Log.log("Start OK"); } } } } } XMLABuilder.Process(@"Data Source=" + GlobalVar.varServer + ";Provider=msolap;", GlobalVar.varDB, GlobalVar.varCube, GlobalVar.varStep, GlobalVar.varMetod); Log.log("END=> /Server:" + GlobalVar.varServer + " /DB:" + GlobalVar.varDB + " /CUBE:" + GlobalVar.varCube + " /Step:" + GlobalVar.varStep.ToString()); if (GlobalVar.varStep < -9990) { Console.ReadKey(true); } }