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());
        }
Exemplo n.º 3
0
        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();
        }