コード例 #1
0
        public async Task <bool> LastConnectionTest(string serverName)
        {
            bool returnValue = false;
            await fileDb.ReadTable(FileDb.TableName.TBL_SERVER);

            TBL_SERVER_VALUE tbl_server_value = new TBL_SERVER_VALUE();

            if (fileDb.TBL_SERVER.Data.ContainsKey(new TBL_SERVER_KEY {
                serverName = serverName
            }))
            {
                tbl_server_value = fileDb.TBL_SERVER.Data[new TBL_SERVER_KEY {
                                                              serverName = serverName
                                                          }];
            }

            string connString = string.Empty;

            if (tbl_server_value != null)
            {
                try
                {
                    string decryptedPassword = TranString.DecodeRijndael(
                        tbl_server_value.serverPassword,
                        LogClient.Config.Instance.GetCryptionKey());

                    connString = new SqlConnectionStringBuilder
                    {
                        DataSource     = tbl_server_value.serverPublicIp + "," + tbl_server_value.serverPort,
                        UserID         = tbl_server_value.serverUserId,
                        Password       = decryptedPassword,
                        InitialCatalog = "master",
                        ConnectTimeout = 5,
                    }.ConnectionString;

                    using (SqlConnection conn = new SqlConnection(connString))
                    {
                        conn.Open();
                        using (SqlCommand cmd = conn.CreateCommand())
                        {
                            cmd.CommandType    = System.Data.CommandType.Text;
                            cmd.CommandText    = @"select top 1 'normal' as healthStatus";
                            cmd.CommandTimeout = 5;
                            SqlDataReader reader = cmd.ExecuteReader();
                            while (reader.Read())
                            {
                                config.DatabaseValue <string>(reader["healthStatus"]);
                            }
                            reader.Close();
                            returnValue = true;
                        }
                        conn.Close();
                        log.Warn("last connection test success!");
                    }
                }
                catch (Exception ex)
                {
                    log.Error(string.Format("{0}, {1}", ex.Message, ex.StackTrace));
                }
            }
            return(returnValue);
        }
コード例 #2
0
        private SqlServerLicenseData GetSqlServerLicenseData(string serverName)
        {
            string batchRequestsPerSec = "";
            string onlineDbCnt         = "";
            string cpuCnt           = "";
            string hyperthreadRatio = "";
            string physicalMemoryKb = "";

            SqlServerLicenseData sld = new SqlServerLicenseData();

            try
            {
                AsyncHelpers.RunSync(() => fileDb.ReadTable(FileDb.TableName.TBL_SERVER));
                TBL_SERVER_VALUE tbl_server_value = new TBL_SERVER_VALUE();
                if (fileDb.TBL_SERVER.Data.ContainsKey(new TBL_SERVER_KEY {
                    serverName = serverName
                }))
                {
                    tbl_server_value = fileDb.TBL_SERVER.Data[new TBL_SERVER_KEY {
                                                                  serverName = serverName
                                                              }];
                }

                string connString = string.Empty;

                if (tbl_server_value != null)
                {
                    try
                    {
                        string decryptedPassword = TranString.DecodeRijndael(
                            tbl_server_value.serverPassword,
                            LogClient.Config.Instance.GetCryptionKey());

                        connString = new SqlConnectionStringBuilder
                        {
                            DataSource     = tbl_server_value.serverPublicIp + "," + tbl_server_value.serverPort,
                            UserID         = tbl_server_value.serverUserId,
                            Password       = decryptedPassword,
                            InitialCatalog = "master",
                            ConnectTimeout = 5,
                        }.ConnectionString;

                        using (SqlConnection conn = new SqlConnection(connString))
                        {
                            conn.Open();
                            using (SqlCommand cmd = conn.CreateCommand())
                            {
                                cmd.CommandType = System.Data.CommandType.Text;
                                cmd.CommandText =
                                    @"
set nocount on 
set transaction isolation level read uncommitted 
declare @pre int, @post int, @BatchRequestsPerSec int, @OnlineDbCnt int, @CpuCnt int, @HyperthreadRatio int, @PhysicalMemoryKb int
begin try 
    select @CpuCnt = cpu_count, @HyperthreadRatio = hyperthread_ratio, @PhysicalMemoryKb = physical_memory_kb from [sys].[dm_os_sys_info]
    select @OnlineDbCnt = count(*) from sys.databases where name not in ('master', 'tempdb', 'model', 'msdb', 'LazyLog') and state_desc = 'ONLINE'
    select @pre = cntr_value from sys.dm_os_performance_counters WHERE counter_name  ='Batch Requests/sec'
    waitfor delay '00:00:01.000'
    select @post = cntr_value from sys.dm_os_performance_counters WHERE counter_name  ='Batch Requests/sec'
    select @BatchRequestsPerSec = (@post - @pre)
end try 
begin catch 
end catch 
select 
    cast(@BatchRequestsPerSec as varchar(100)) batchRequestsPerSec 
    , cast(@OnlineDbCnt as varchar(100)) onlineDbCnt
    , cast(@CpuCnt as varchar(100)) cpuCnt
    , cast(@HyperthreadRatio as varchar(100)) hyperthreadRatio
    , cast(@PhysicalMemoryKb as varchar(100)) physicalMemoryKb
";
                                cmd.CommandTimeout = 5;
                                SqlDataReader reader = cmd.ExecuteReader();
                                while (reader.Read())
                                {
                                    batchRequestsPerSec = config.DatabaseValue <string>(reader["batchRequestsPerSec"]);
                                    onlineDbCnt         = config.DatabaseValue <string>(reader["onlineDbCnt"]);
                                    cpuCnt           = config.DatabaseValue <string>(reader["cpuCnt"]);
                                    hyperthreadRatio = config.DatabaseValue <string>(reader["hyperthreadRatio"]);
                                    physicalMemoryKb = config.DatabaseValue <string>(reader["physicalMemoryKb"]);
                                }
                                reader.Close();
                            }
                            conn.Close();
                        }

                        GetClusterInfo(GetServerName(), out string loadBalancerInstanceNo, out string serverInstanceNo, out string clusterName, out string publicIp, out string privateIp, out string serverRole);

                        sld.loadBalancerInstanceNo   = loadBalancerInstanceNo;
                        sld.loadBalancerInstanceName = clusterName;
                        sld.serverName          = serverName;
                        sld.serverInstanceNo    = serverInstanceNo;
                        sld.privateIp           = privateIp;
                        sld.serverRole          = serverRole;
                        sld.batchRequestsPerSec = batchRequestsPerSec;
                        sld.onlineDbCnt         = onlineDbCnt;
                        sld.cpuCnt           = cpuCnt;
                        sld.hyperthreadRatio = hyperthreadRatio;
                        sld.physicalMemoryKb = physicalMemoryKb;
                    }
                    catch (Exception ex)
                    {
                        log.Error(string.Format("get licensedata error {0}, {1}", ex.Message, ex.StackTrace));
                    }
                }
            }
            catch (Exception ex)
            {
                log.Error(string.Format("{0}, {1}", ex.Message, ex.StackTrace));
            }
            return(sld);
        }