zoukankan      html  css  js  c++  java
  • 你离100%有多远

    昨天修改个工具,关于数据库版本验证工具。

    原先设计的版本验证是根据Test环境设计的,所以upgrade后的数据库和back DB的版本进行验证,而真正产品部署好后,back DB是upgrade之前备份的,所以取back DB就需要做一些添加更改。

     本来计划是根据今天的日期取最新的back DB, 根据 create date 排序。但当写好代码后,我敏感的发现问题了。假设是11:59 PM之前备份好数据库,过了12点就第二天了,如果用当前日期取back DB,那就取不到!代码已经写好了,怎么办????

    //string backupDB = string.Format("PartitionMaster_Backup_{0}", "20121011");
    backupedPartitionMaster = GetBackupedPartitionMasterDatabase(backupDB);
    
    public string GetBackupedPartitionMasterDatabase(string database)
            {
                using (SqlConnection conn = new SqlConnection(MasterConnectionString))
                {
                    conn.Open();
                    string name = null;
                    using (SqlCommand cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = string.Format(CheckDatabaseFullName, database);
                        using (SqlDataReader reader = cmd.ExecuteReader())
                        {
                            while (reader.Read())
                            {
                                name = reader["name"].ToString();
                                Logger.Info(string.Format("Database: {0} exists", name));
                            }
                        }
                    }
    
                    return name;
                }
            }
    View Code

    如果有2个选择,一个简单一个复杂并且自己不懂,那么本能是选择简单的方案!!!(SQL 中的时间处理我感觉不太会用,感觉比较麻烦,而且要花时间去查查资料)

    纠结了一会,想想,这个无所谓,12点前backup DB, 应该不会碰到吧,反正这个也是测试代码,不是真正的产品代码。没事!

    但脑海中一个例子影响了我,现在做到的是80%,而最后的努力,可能离100%更近,我为什么不再多花点时间把这20%给添加上呢?能做到更近100%,为什么只做80%呢?最终我的正面能量战胜了负面能量!改改改。改好后,一份完美的代码做了code review.

    private const string CheckDatabaseFullName = "Select name from sys.databases where create_date>@datetime and name like N'PartitionMaster_Backup%' order by create_date";
    backupedPartitionMaster = GetBackupedPartitionMasterDatabase();
    
    public string GetBackupedPartitionMasterDatabase()
            {
                using (SqlConnection conn = new SqlConnection(MasterConnectionString))
                {                
                    DateTime dt = DateTime.Now.AddHours(-12).ToUniversalTime();                
                    conn.Open();
                    string name = null;
                    using (SqlCommand cmd = conn.CreateCommand())
                    {
                        //cmd.CommandText = string.Format(CheckDatabaseFullName, database);
                        cmd.CommandText = CheckDatabaseFullName;
                        cmd.Parameters.Add("@datetime", SqlDbType.DateTime);
                        cmd.Parameters[0].Value = dt;
    
                        using (SqlDataReader reader = cmd.ExecuteReader())
                        {
                            while (reader.Read())
                            {
                                name = reader["name"].ToString();
                                Logger.Info(string.Format("Database: {0} exists", name));
                            }
                        }
                    }
    
                    return name;
                }
            }
    View Code

    记得以前公司一位牛人说过,多花时间把事情做到最好,当时没在意。现在才有真正的体会。2点感想

    1. 如果一件事可以做到 80% ~ 100%,为什么不多花点时间做到更好呢?
    2. 其实生活中的我们不都一样吗?不愿意接受新的事物,自己不熟悉,会有恐惧感!而真正让我们成长的确是这些新生事物,如果不去尝试,永远止步在那里!
  • 相关阅读:
    Mysql字段约束
    MYSQL中数据类型介绍
    Redis常见的几种使用方式及其优缺点
    python解析jason串,数据存入数据库
    redo log
    Oracle控制文件(Control Files)
    笔记
    redis面试题
    mysqldump备份
    超简单的内网穿透技巧(使用花生壳进行内网穿透)
  • 原文地址:https://www.cnblogs.com/binyao/p/3090445.html
Copyright © 2011-2022 走看看