昨天修改个工具,关于数据库版本验证工具。
原先设计的版本验证是根据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; } }
如果有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; } }
记得以前公司一位牛人说过,多花时间把事情做到最好,当时没在意。现在才有真正的体会。2点感想
- 如果一件事可以做到 80% ~ 100%,为什么不多花点时间做到更好呢?
- 其实生活中的我们不都一样吗?不愿意接受新的事物,自己不熟悉,会有恐惧感!而真正让我们成长的确是这些新生事物,如果不去尝试,永远止步在那里!