private void BindData() { try { //호스트 정보 가져오기 cloud.R_Adhoc("select ServerNum,HostName,DisplayName,DisplayGroup,RAMSIZE,IPAddress,ServerType,WinVer,Processors,CurrentStatus, TimeIn_UTC from tbHostStatus where ServerNum = " + ServerNum); dt_Server = cloud.dsReturn.Tables[0]; dt_Server = Lib.ConvertingProc.SetDashboardDtServer(dt_Server); //각 차트에서 참조해서 사용할 공통 데이터 테이블 생성 cloud.R_Adhoc("select a.TimeIn_UTC, Data_JSON from tbPerfmonValues_JSON as a with(nolock) inner join tbHostStatus as b on a.TimeIn_UTC = b.TimeIn_UTC and a.ServerNum = b.ServerNum where b.ServerNum = " + ServerNum); //신규추가 2017-09-23 if (cloud.dsReturn.Tables[0].Rows.Count > 0) { //데이터 테이블 구조생성용으로 첫번째 json데이터를 불러와서 컬럼명을 자동셋팅하도록 DataTable tester = (DataTable)JsonConvert.DeserializeObject(((string)cloud.dsReturn.Tables[0].Rows[0]["Data_Json"]), (typeof(DataTable))); //tester 에는 실제로 데이터가 들어가잇고 clone 을 이용해 dt_Struct 에 데이터테이블 구조만 복사 //DataTable dt_struct = new DataTable(); dt_PerfmonValue = tester.Clone(); dt_PerfmonValue.AcceptChanges(); // 이후 dt_struct 에 계속 merge (union) 하여 하나로 합체 테스트로 돌려보니 rowcount 8만 정도 나왓네요 foreach (DataRow dr in cloud.dsReturn.Tables[0].Rows) { DataTable dt_tmp = (DataTable)JsonConvert.DeserializeObject(((string)dr["Data_Json"]), (typeof(DataTable))); //신규추가 2017-09-23 데이터 머지 = mssql union //신규추가 2017-09-23 참조 https://msdn.microsoft.com/ko-kr/library/fk68ew7b(v=vs.110).aspx dt_PerfmonValue.Merge(dt_tmp); } } //dt_FreeDisk 데이터 테이블 만들기 var test = from r in dt_PerfmonValue.AsEnumerable() where (r.Field <string>("PCID") == "P018" || r.Field <string>("PCID") == "P164" || r.Field <string>("PCID") == "P015" || r.Field <string>("PCID") == "P190" || r.Field <string>("PCID") == "P194") && !r.Field <string>("InstanceName").Contains("_Total") && !r.Field <string>("InstanceName").Contains("HarddiskVolume") select r; dt_FreeDisk = dt_PerfmonValue.Clone(); foreach (DataRow r in test) { var newRow = dt_FreeDisk.NewRow(); newRow.ItemArray = r.ItemArray; dt_FreeDisk.Rows.Add(newRow);//I'm doubtful if you need to call this or not } //MaxDIsk 정보 가져오기 dt_MaxDisk = Lib.ConvertingProc.SetDiskMaxProc(dt_FreeDisk); dt_MaxDisk = Lib.ConvertingProc.SetDashboardDtServer(dt_MaxDisk); //dt_FreeDisk = Lib.ConvertingProc.Pivot(dt_FreeDisk, "InstanceName", "TimeIn", "PValue"); dt_FreeDisk = Lib.ConvertingProc.SetDiskProc(dt_FreeDisk); //여기가 수정 한곳 //윈도우 성능 정보 가져오기 int nReturn = cloud.get_Dashboard_Chart(ServerNum.ToString()); dt_Data = Lib.ConvertingProc.ChangeDashboardColumnName(cloud.dsReturn.Tables[0]); dt_Data = Lib.ConvertingProc.SetDashboardDtServer(dt_Data); //성능 정보에서 최근값을 라벨에 뿌려주기 위해 MaxData 생성해서 마지막 값 읽기 dt_MaxData = new DataTable(); dt_MaxData = dt_Data.Clone(); dt_MaxData.ImportRow(dt_Data.Rows[dt_Data.Rows.Count - 1]); //dt_MaxData = Lib.ConvertingProc.SetDashboardDtServer(dt_MaxData); //차트 데이터 던지기 List <Lib.chartProperty> cplst = new List <Lib.chartProperty>(); StringBuilder sb = new StringBuilder(); cplst = Lib.Flotr2.SetArrayString_Lines(dt_Data, SetChartProperty()); cplst = Lib.Flotr2.SetArrayString_Cols(dt_Data, cplst); cplst = Lib.Flotr2.SetArrayString_Bar(dt_FreeDisk, cplst); sb = Lib.Flotr2.SetStringValue(cplst, sb, ServerNum.ToString()); litScript_UC.Text += Lib.Util.BoxingScript(sb.ToString()); } catch { } }
private void BindData() { //호스트 정보 가져오기 cloud.R_Adhoc("select ServerNum,HostName,DisplayName,DisplayGroup,RAMSIZE,IPAddress,ServerType,WinVer,Processors,CurrentStatus, TimeIn_UTC from tbHostStatus where ServerNum = " + ServerNum); dt_Server = cloud.dsReturn.Tables[0]; dt_Server = Lib.ConvertingProc.SetDashboardDtServer(dt_Server); //각 차트에서 참조해서 사용할 공통 데이터 테이블 생성 cloud.R_Adhoc("select a.TimeIn_UTC, Data_JSON from tbPerfmonValues_JSON as a with(nolock) inner join tbHostStatus as b on a.TimeIn_UTC = b.TimeIn_UTC and a.ServerNum = b.ServerNum where b.ServerNum = " + ServerNum); //신규추가 2017-09-23 if (cloud.dsReturn.Tables[0].Rows.Count > 0) { //데이터 테이블 구조생성용으로 첫번째 json데이터를 불러와서 컬럼명을 자동셋팅하도록 DataTable tester = (DataTable)JsonConvert.DeserializeObject(((string)cloud.dsReturn.Tables[0].Rows[0]["Data_Json"]), (typeof(DataTable))); //tester 에는 실제로 데이터가 들어가잇고 clone 을 이용해 dt_Struct 에 데이터테이블 구조만 복사 //DataTable dt_struct = new DataTable(); dt_PerfmonValue = tester.Clone(); dt_PerfmonValue.AcceptChanges(); // 이후 dt_struct 에 계속 merge (union) 하여 하나로 합체 테스트로 돌려보니 rowcount 8만 정도 나왓네요 foreach (DataRow dr in cloud.dsReturn.Tables[0].Rows) { DataTable dt_tmp = (DataTable)JsonConvert.DeserializeObject(((string)dr["Data_Json"]), (typeof(DataTable))); //신규추가 2017-09-23 데이터 머지 = mssql union //신규추가 2017-09-23 참조 https://msdn.microsoft.com/ko-kr/library/fk68ew7b(v=vs.110).aspx dt_PerfmonValue.Merge(dt_tmp); } } //tbDashboard 공통 데이터 생성 cloud.R_Adhoc("select TimeIn_UTC, Data_JSON from tbDashboard_JSON with(nolock) where ServerNum = " + ServerNum + " and TimeIn_UTC >= dateadd(minute, -15, GETUTCDATE())"); if (cloud.dsReturn.Tables[0].Rows.Count > 0) { //데이터 테이블 구조생성용으로 첫번째 json데이터를 불러와서 컬럼명을 자동셋팅하도록 DataTable tester = (DataTable)JsonConvert.DeserializeObject(((string)cloud.dsReturn.Tables[0].Rows[0]["Data_Json"]), (typeof(DataTable))); //tester 에는 실제로 데이터가 들어가잇고 clone 을 이용해 dt_Struct 에 데이터테이블 구조만 복사 //DataTable dt_struct = new DataTable(); dt_Dashboard = tester.Clone(); dt_Dashboard.AcceptChanges(); // 이후 dt_struct 에 계속 merge (union) 하여 하나로 합체 테스트로 돌려보니 rowcount 8만 정도 나왓네요 foreach (DataRow dr in cloud.dsReturn.Tables[0].Rows) { DataTable dt_tmp = (DataTable)JsonConvert.DeserializeObject(((string)dr["Data_Json"]), (typeof(DataTable))); //신규추가 2017-09-23 데이터 머지 = mssql union //신규추가 2017-09-23 참조 https://msdn.microsoft.com/ko-kr/library/fk68ew7b(v=vs.110).aspx dt_Dashboard.Merge(dt_tmp); } } //DB 정보 가져오기 //int nReturn = cloud.w_Dashboard_SQL_Server(MemberNum, CompanyNum, ServerNum); cloud.R_Adhoc("select InstanceName,IsClustered,ComputerNamePhysicalNetBIOS,Edition,ProductLevel,ProductVersion,ProcessID,Collation,IsFullTextInstalled,IsIntegratedSecurityOnly,IsHadrEnabled,HadrManagerStatus,IsXTPSupported from tbSQLServerInfo where ServerNum = " + ServerNum); dt_DBInfo = cloud.dsReturn.Tables[0]; //dt_FreeDisk 데이터 테이블 만들기 var test = from r in dt_PerfmonValue.AsEnumerable() where (r.Field <string>("PCID") == "P018" || r.Field <string>("PCID") == "P164" || r.Field <string>("PCID") == "P015" || r.Field <string>("PCID") == "P190" || r.Field <string>("PCID") == "P194") && !r.Field <string>("InstanceName").Contains("_Total") && !r.Field <string>("InstanceName").Contains("HarddiskVolume") select r; dt_FreeDisk = dt_PerfmonValue.Clone(); foreach (DataRow r in test) { var newRow = dt_FreeDisk.NewRow(); newRow.ItemArray = r.ItemArray; dt_FreeDisk.Rows.Add(newRow);//I'm doubtful if you need to call this or not } //MaxDIsk 정보 가져오기 dt_MaxDisk = Lib.ConvertingProc.SetDiskMaxProc(dt_FreeDisk); dt_MaxDisk = Lib.ConvertingProc.SetDashboardDtServer(dt_MaxDisk); //dt_FreeDisk = Lib.ConvertingProc.Pivot(dt_FreeDisk, "InstanceName", "TimeIn", "PValue"); dt_FreeDisk = Lib.ConvertingProc.SetDiskProc(dt_FreeDisk); //dt_Processor 데이터 테이블 만들기 var Processor = from r in dt_Dashboard.AsEnumerable() where (r.Field <string>("PNum") == "P0") select r; dt_Processor = dt_Dashboard.Clone(); foreach (DataRow r in Processor) { var newRow = dt_Processor.NewRow(); newRow.ItemArray = r.ItemArray; dt_Processor.Rows.Add(newRow);//I'm doubtful if you need to call this or not } //SQL Dashboard 성능 정보 가져오기 int nReturn = cloud.get_Dashboard_Chart(ServerNum.ToString()); dt_Data = Lib.ConvertingProc.ChangeDashboardColumnName(cloud.dsReturn.Tables[0]); dt_Data = Lib.ConvertingProc.SetDashboardDtServer(dt_Data); //성능 정보에서 최근값을 라벨에 뿌려주기 위해 MaxData 생성해서 마지막 값 읽기 dt_MaxData = new DataTable(); dt_MaxData = dt_Data.Clone(); dt_MaxData.ImportRow(dt_Data.Rows[dt_Data.Rows.Count - 1]); //dt_MaxData = Lib.ConvertingProc.SetDashboardDtServer(dt_MaxData); //SQL Agent Fail //nReturn = cloud.get_SQLAgentFail(ServerNum); //numSQLAgent = cloud.dsReturn.Tables[0].Rows.Count; //SQL Lnked //nReturn = cloud.get_SQLLinked(ServerNum); //numSQLLinked = cloud.dsReturn.Tables[0].Rows.Count; //SQL Service //nReturn = cloud.get_SQLServiceStatus(ServerNum); //numSQLService = cloud.dsReturn.Tables[0].Rows.Count; //SQL Error //nReturn = cloud.get_SQLErrorlog(ServerNum); //numSQLLinked = cloud.dsReturn.Tables[0].Rows.Count; //SQL Session //nReturn = cloud.get_SQLSession(ServerNum); //if (cloud.dsReturn.Tables[0].Rows.Count > 0) //{ // //데이터 테이블 구조생성용으로 첫번째 json데이터를 불러와서 컬럼명을 자동셋팅하도록 // DataTable tester = (DataTable)JsonConvert.DeserializeObject(((string)cloud.dsReturn.Tables[0].Rows[0]["Data_Json"]), (typeof(DataTable))); // //tester 에는 실제로 데이터가 들어가잇고 clone 을 이용해 dt_Struct 에 데이터테이블 구조만 복사 // //DataTable dt_struct = new DataTable(); // dt_SQLSession = tester.Clone(); // dt_SQLSession.AcceptChanges(); // // 이후 dt_struct 에 계속 merge (union) 하여 하나로 합체 테스트로 돌려보니 rowcount 8만 정도 나왓네요 // foreach (DataRow dr in cloud.dsReturn.Tables[0].Rows) // { // DataTable dt_tmp = (DataTable)JsonConvert.DeserializeObject(((string)dr["Data_Json"]), (typeof(DataTable))); // //신규추가 2017-09-23 데이터 머지 = mssql union // //신규추가 2017-09-23 참조 https://msdn.microsoft.com/ko-kr/library/fk68ew7b(v=vs.110).aspx // dt_SQLSession.Merge(dt_tmp); // } //} //foreach (DataRow dr in dt_SQLSession.Rows) //{ // numSessionCNT += Convert.ToInt32(dr["TotalSession"].ToString()); // numActiveSession += Convert.ToInt32(dr["ActiveSession"].ToString()); //} //SQL Database File Size //nReturn = cloud.get_SQLDatabaseFileSize(ServerNum); //if (cloud.dsReturn.Tables[0].Rows.Count > 0) //{ // //데이터 테이블 구조생성용으로 첫번째 json데이터를 불러와서 컬럼명을 자동셋팅하도록 // DataTable tester = (DataTable)JsonConvert.DeserializeObject(((string)cloud.dsReturn.Tables[0].Rows[0]["Data_Json"]), (typeof(DataTable))); // //tester 에는 실제로 데이터가 들어가잇고 clone 을 이용해 dt_Struct 에 데이터테이블 구조만 복사 // //DataTable dt_struct = new DataTable(); // dt_DatabaseFileSize = tester.Clone(); // dt_DatabaseFileSize.AcceptChanges(); // // 이후 dt_struct 에 계속 merge (union) 하여 하나로 합체 테스트로 돌려보니 rowcount 8만 정도 나왓네요 // foreach (DataRow dr in cloud.dsReturn.Tables[0].Rows) // { // DataTable dt_tmp = (DataTable)JsonConvert.DeserializeObject(((string)dr["Data_Json"]), (typeof(DataTable))); // //신규추가 2017-09-23 데이터 머지 = mssql union // //신규추가 2017-09-23 참조 https://msdn.microsoft.com/ko-kr/library/fk68ew7b(v=vs.110).aspx // dt_DatabaseFileSize.Merge(dt_tmp); // } //} //numDatabaseCNT = dt_DatabaseFileSize.Rows.Count; //numDataFileSize_Total = 0; //numDataFileSize_Use = 0; //numLogFileSize_Total = 0; //numLogFileSize_Use = 0; //if (dt_DatabaseFileSize.Rows.Count > 0) //{ // foreach (DataRow dr in dt_DatabaseFileSize.Rows) // { // numDataFileSize_Total = numDataFileSize_Total + Convert.ToDouble(dr["Datafile_Size_MB"].ToString()); // numDataFileSize_Use = numDataFileSize_Use + Convert.ToDouble(dr["Data_MB"].ToString()) + Convert.ToDouble(dr["Index_MB"].ToString()); // numLogFileSize_Total = numLogFileSize_Total + Convert.ToDouble(dr["Transaction_Log_Size"].ToString()); // numLogFileSize_Use = numLogFileSize_Use + Convert.ToDouble(dr["Log_Used_Size_MB"].ToString()); // numVLFCNT = 0; // stVLF_DB = ""; // if (Convert.ToInt32(dr["Total_vlf_cnt"].ToString()) > numVLFCNT) // { // numVLFCNT = Convert.ToInt32(dr["Total_vlf_cnt"].ToString()); // stVLF_DB = dr["DatabaseName"].ToString(); // } // } //} //SQL Index Flag numIndexFlag = 0; numIndexFlagObject = ""; //nReturn = cloud.get_SQLIndexflag(ServerNum); //if (cloud.dsReturn.Tables[0].Rows.Count > 0) //{ // //데이터 테이블 구조생성용으로 첫번째 json데이터를 불러와서 컬럼명을 자동셋팅하도록 // DataTable tester = (DataTable)JsonConvert.DeserializeObject(((string)cloud.dsReturn.Tables[0].Rows[0]["Data_Json"]), (typeof(DataTable))); // //tester 에는 실제로 데이터가 들어가잇고 clone 을 이용해 dt_Struct 에 데이터테이블 구조만 복사 // dt_SQLIndexFlag = tester.Clone(); // dt_SQLIndexFlag.AcceptChanges(); // foreach (DataRow dr in cloud.dsReturn.Tables[0].Rows) // { // DataTable dt_tmp = (DataTable)JsonConvert.DeserializeObject(((string)dr["Data_Json"]), (typeof(DataTable))); // dt_SQLIndexFlag.Merge(dt_tmp); // } // foreach (DataRow dr in dt_SQLIndexFlag.Rows) // { // if (Convert.ToInt32(dr["avg_frag_percent"].ToString()) > numIndexFlag) // { // numIndexFlag = Convert.ToInt32(dr["avg_frag_percent"].ToString()); // numIndexFlagObject = dr["db_name"].ToString() + ":" + dr["object_name"].ToString(); // } // } //} //차트 데이터 던지기 List <Lib.chartProperty> cplst = new List <Lib.chartProperty>(); StringBuilder sb = new StringBuilder(); cplst = Lib.Flotr2.SetArrayString_Lines(dt_Data, SetChartProperty()); cplst = Lib.Flotr2.SetArrayString_Cols(dt_Data, cplst); cplst = Lib.Flotr2.SetArrayString_Bar(dt_FreeDisk, cplst); sb = Lib.Flotr2.SetStringValue(cplst, sb, ServerNum.ToString()); litScript_UC.Text += Lib.Util.BoxingScript(sb.ToString()); }
public void BindData() { dt_Alert = new DataTable(); //서버리스트 읽어오기 string MyServerList = ""; cloud.SetCmd("Cloud"); cloud.get_MyServerList(MemberNum); foreach (DataRow dr in cloud.dsReturn.Tables[0].Rows) { MyServerList += dr["ServerNum"].ToString() + ","; } MyServerList = MyServerList.Substring(0, MyServerList.Length - 1); int nReturn = cloud.get_ServerStatus(MyServerList); if (cloud.dsReturn.Tables[0].Rows.Count > 0) { MyServerList = ""; foreach (DataRow dr in cloud.dsReturn.Tables[0].Select("ServerType = 'Web'")) { MyServerList += dr["ServerNum"].ToString() + ","; } MyServerList = MyServerList.Substring(0, MyServerList.Length - 1); } nReturn = cloud.get_Dashboard(MyServerList);; dt_w_Dashboard = Lib.ConvertingProc.w_Dashboard(cloud.dsReturn.Tables[0]); gvList.DataSource = dt_w_Dashboard; nReturn = nReturn = cloud.get_Dashboard_Chart(MyServerList); dt_w_Dashboard_chart = Lib.ConvertingProc.ChangeDashboardColumnName(cloud.dsReturn.Tables[0]); //각 차트에서 참조해서 사용할 공통 데이터 테이블 생성 nReturn = cloud.get_PerfvaluesData_Company(CompanyNum); //신규추가 2017-09-23 if (cloud.dsReturn.Tables[0].Rows.Count > 0) { //데이터 테이블 구조생성용으로 첫번째 json데이터를 불러와서 컬럼명을 자동셋팅하도록 DataTable tester = (DataTable)JsonConvert.DeserializeObject(((string)cloud.dsReturn.Tables[0].Rows[0]["Data_Json"]), (typeof(DataTable))); //tester 에는 실제로 데이터가 들어가잇고 clone 을 이용해 dt_Struct 에 데이터테이블 구조만 복사 //DataTable dt_struct = new DataTable(); dt_PerfmonValue = tester.Clone(); dt_PerfmonValue.AcceptChanges(); // 이후 dt_struct 에 계속 merge (union) 하여 하나로 합체 테스트로 돌려보니 rowcount 8만 정도 나왓네요 foreach (DataRow dr in cloud.dsReturn.Tables[0].Rows) { DataTable dt_tmp = (DataTable)JsonConvert.DeserializeObject(((string)dr["Data_Json"]), (typeof(DataTable))); //신규추가 2017-09-23 데이터 머지 = mssql union //신규추가 2017-09-23 참조 https://msdn.microsoft.com/ko-kr/library/fk68ew7b(v=vs.110).aspx dt_PerfmonValue.Merge(dt_tmp); } } //dt_FreeDisk 데이터 테이블 만들기 var test = from r in dt_PerfmonValue.AsEnumerable() where (r.Field <string>("PCID") == "P018" || r.Field <string>("PCID") == "P164" || r.Field <string>("PCID") == "P015" || r.Field <string>("PCID") == "P190" || r.Field <string>("PCID") == "P194") && !r.Field <string>("InstanceName").Contains("_Total") && !r.Field <string>("InstanceName").Contains("HarddiskVolume") select r; dt_FreeDisk = dt_PerfmonValue.Clone(); foreach (DataRow r in test) { var newRow = dt_FreeDisk.NewRow(); newRow.ItemArray = r.ItemArray; dt_FreeDisk.Rows.Add(newRow);//I'm doubtful if you need to call this or not } dt_FreeDisk = Lib.ConvertingProc.SetDiskProc_All(dt_FreeDisk); gvList.DataBind(); //Alert Message 로딩 //nReturn = cloud.get_AlertMessage(MyServerList, numAlertDataDuration); //if (cloud.dsReturn.Tables[0].Rows.Count > 0) //{ // //데이터 테이블 구조생성용으로 첫번째 json데이터를 불러와서 컬럼명을 자동셋팅하도록 // DataTable tester = (DataTable)JsonConvert.DeserializeObject(((string)cloud.dsReturn.Tables[0].Rows[0]["Data_Json"]), (typeof(DataTable))); // //tester 에는 실제로 데이터가 들어가잇고 clone 을 이용해 dt_Struct 에 데이터테이블 구조만 복사 // DataTable dt_struct = new DataTable(); // dt_Alert = tester.Clone(); // dt_Alert.Columns.Add("RepeatCnt"); // dt_Alert.AcceptChanges(); // //이후 dt_struct 에 계속 merge(union) 하여 하나로 합체 테스트로 돌려보니 rowcount 8만 정도 나왓네요 // foreach (DataRow dr in cloud.dsReturn.Tables[0].Rows) // { // DataTable dt_tmp = (DataTable)JsonConvert.DeserializeObject(((string)dr["Data_Json"]), (typeof(DataTable))); // //신규추가 2017 - 09 - 23 데이터 머지 = mssql union // //신규추가 2017 - 09 - 23 참조 https://msdn.microsoft.com/ko-kr/library/fk68ew7b(v=vs.110).aspx // dt_Alert.Merge(dt_tmp); // } //} //cloud.dsReturn.Dispose(); }