中小企业项目的痛VS感人IT团队
早上,接到客户电话,dynamics CRM不能用了,此客户从开始安装程序开始二次开发期间,因电源问题导致服务器多次意外断电,至今也不加UPS电源。前几次,都不是很严重,服务器没有大量文件损坏,操作系统还能正常,远程都可以解决了。
此次,操作系统不正常了,看来问题大了去了。团队人员赶过去,惊呆了。硬盘已坏了一块,数据库没有备份。项目一直因种种原因没有验收,完全还原干净的系统我们只要半小时,但客户使用了一时间,有几万的数据。项目没有验收,先前管理机房人员已辞职,机房在一个全封闭的小仓库中,没有空调,单电源,没有UPS。这种情况,估计再好的服务器也会在高温时挂机。
还好服务器做的raid 5,一块硬盘坏了没有事,但发现在服务器不正常时,遭遇几次意外关机,数据库文件根本不能用,也没有备份。
安先前经验,重新恢复数据,处理几次还是数据质疑,最终去了日志文件,解决了质疑问题。刚松了口气,发现了更大问题。数据库的数据出错了,查询前几千条没事,再多一条就报数据类型,数据值过大等错误。Delete,也不管用。不知各位碰到过这么神奇的问题没,我听说这情况就头大了。
此时,已过了下班时间,当团队其他人都听说此时,全部自动到达客户现场,包括出差刚回济南,包括忙着别的项目,从未接触过此项目的技术人员。大家开始讨论方案,分工合作,发现select 都不能查询导出的数据,可以通过数据库角本生成数据。先将数据角本生成保存出来。一部分人还测试完全解决数据库问题,另一部分人重新生成组织,做了一套全新干净的系统,论证实验怎样通过角本数据还原所有数据。发现原来设计不到50人使用的系统,客户已有200多人用CRM 与呼叫系统,4倍压力,服务器怎么能跑动了?再深入分析数据发现,系统中有一些数据已出错,角本不能直接有,要剔除错误数据,并且修正好再处理,做了很多年系统,第一次处理这样的事。(可能以前都有备份吧)并且这样处理,真是项目浩大工程。最后,发现数据库不可能还原,只能手工修复数据了。
在多数公司中,如果碰到一个与自己无关工作,出现了要出很大力还不敢保证做好的事情,估计多数人会躲的远远的。让我感动之处是,除了我(我在外地出差),都在现场积极处理,分工合作。做过dyanmics crm 多年的同仁们,如果给你一堆角本,剔除错误数据,再分析改正,还原生成到系统中,可能吗?这此问题发生之前,我绝对不相信能搞好。但我们的团队做到了,微软不让开发着动数据库,很多人都不清楚数据放在哪,共享数据在哪,相互关联数据怎样生成。新组织的实体相关数据的ID是会变的。所有这些问题,都在模拟测试一步步攻克,当然团队加班熬夜付出就不谈了。
此次事件,让学深刻学习到了,不可以太纵容客户,实际那是不负责任的;为团队成员感动,让我看到团队很强大,相信我们以后会做得更好。另一方面,对我们云产品CRM早日上线更强烈。
中小企业项目的痛VS感人IT团队的更多相关文章
- 团队项目——编写项目的Spec
团队项目--编写项目的Spec 一.Spec的目标 spec主要用来说明软件的外部功能,和用户的交互情况,主要用来说明软件内部的设计.图片编辑器是与生活息息相关的一个必备软件,随的流行, ...
- 干货|人人都是翻译项目的Master
在平时的工作中,我们都会经常查阅一些英文文档来解决平时遇到的问题和拓宽视野.看到好的文章或者书籍有没有想要和小伙伴分享的冲动,那么我们一起来翻译吧- 翻译主张 "信 达 雅" .& ...
- 搜刮一些开源项目的APP
iOS完整App资源收集 <iOS完整app资源收集> <GitHub 上有哪些完整的 iOS-App 源码值得参考?> <GitHub 上有哪些完整的 iOS-App ...
- 如何修改MyEclipse项目的web context-root
修改一个MyEclipse项目的名称很容易,右键点项目->rename就行了. 但此时项目的web context-root 还没有改变,需要右键点项目->properties->M ...
- 为什么项目的jar包会和tomcat的jar包冲突?
为什么项目的jar包会和tomcat的jar包冲突? 碰到这个问题,猜测tomcat启动时会将自己的lib和项目的lib在逻辑上归并为一个大的lib,但是并没有做版本区分以及去重,这样相同的包可能就有 ...
- spring项目的 context root 修改之后,导致 WebApplicationContext 初始化两次的解决方法
修改了 spring web 项目的 context root 为 / 之后,在启动项目时,会导致 WebApplicationContext 初始化两次,下面是其初始化日志: 第一次初始化: 四月 ...
- 谈谈软件项目的dependency
说到软件项目的依赖管理,可以从三个方面来考虑: 一.由build system控制的dependency 现在的build system,都支持一定程度上的dependency management, ...
- Eclipse中修改Web项目的URL访问路径
背景 访问路径,也就是指在浏览器中访问该web系统时的根路径,比如http://localhost:8080/xxxx/index.jsp 这里的xxxx,也就是request.getContext ...
- 系列文章:老项目的#iPhone6与iPhone6Plus适配#(持续更新中,更新日期2014年10月12日 星期日 )
本文永久地址为http://www.cnblogs.com/ChenYilong/p/4020399.html ,转载请注明出处. ********************************** ...
随机推荐
- Android媒体扫描详细解析之一(MediaScanner & MediaProvider)
用过Android手机的同学都知道,每次开机的时候系统会先扫描sdcard,sdcard重新插拔(挂载)也会扫描一次sdcard. 为什么要扫描sdcard,其实是为了给系统的其他应用提供便利,比如, ...
- [Angular] Angular i18n Pluralization Support
// Component: this.coursesTotal = this.course,length <div i18n>{coursesTotal, plural, =0 {No c ...
- 并发编程JUC系列AQS(CountDownLatch、CyclicBarrier、Semaphore)
一.CountDownLatch package com.jonychen.test; import java.util.concurrent.CountDownLatch; import java. ...
- java中==与equal()的区别
==和equal()都是用来判断两个变量是否相等的. (1)如果两个变量是基本类型变量,且都是数值型的(不一定数据类型相同),只要是值相同,将返回true; (2)如果两个变量是引用型变量,只有它们指 ...
- JMeter 五:监控服务器
参考:http://jmeter.apache.org/usermanual/build-monitor-test-plan.html 添加Thread Group 添加方法:Test Plan上右键 ...
- java基础-java语言中的keyword总结
keyword 1.定义:被java语言赋于了特殊含义的单词 2.用于定义基本数据类型的keyword: class interface float int long double byte ...
- UIActivityViewController实现系统原生分享
代码地址如下:http://www.demodashi.com/demo/11042.html 一.效果预览 二.接下来介绍UIActivityViewController,跟我动手做 1.创建要分享 ...
- 【WEB】jQuery获取页面回滚或跳转事件
1.效果: 2.Jquery: //记得引入jquery.min.js <script type="text/javascript"> $(function(){ wi ...
- linux下各种形式的shell加法操作总结
linux 下shell加法操作总结: #!/bin/bash n=1;echo -n "$n " let "n = $n + 1" echo -n & ...
- sql关于group by之后把每一条记录的详情的某个字段值合并提取的方法
在利用group by写了统计语句之后,还有一个查看每一个记录详情的需求, 首先想到的是根据group by的条件去拼接查询条件, 但是条件有点多,拼接起来不仅麻烦,还容易出错, 所以想到要在grou ...