日期:2014-05-17  浏览次数:20481 次

MS SQL Server 2005该升级了吗?如何进行数据库的梳理工作?
背景:
1.系统是10年前开始自主开发的系统(BS,ASP)。当前的数据库是MS SQL Server 2005(应该是从2000升级上来的)。
问题:
1.表很乱,有700个表吧,不过估计有20%甚至更多是没有用的。
2.没有数据字典,表和字段命名中英文混杂,看不懂。
3.很多地方没有外键约束,导致了数据库里面有很多错误数据。
4.现在数据库里面大量的存储过程,触发器,很多视图,然后有很多SQL效率低下,经常导致系统动不了了。

想法:
1.重新架构和实现系统。
2.反正是做新系统,老的系统先不要去动了。用SQL Server的新版本建立新的数据库。
3.逐步去梳理一个个的表。通过程序把旧的数据库里面的数据导入新的数据库。

难题:
1. 新的数据库和原来那个旧的数据库,如何去做数据同步(实时)。

这个思路有没有问题?应该如何去解决这个难题。
MS?SQL

------解决方案--------------------
建议直接升级到2008 R2 性价比比较好。2012按核收费,确实有点坑。

另外,既然是新建程序,建议还是直接从业务着手,按照现有业务处理,进行重新设计。
原表的相关数据,建议新程序稳定后,进行数据整理转接工作。同时做同步,需要双向进行验证,而且由于业务不同可能造成混乱的局面,尽量减少旧系统与新系统之间的交互,可限制问题在单一库上,比较容易排查。

两个程序肯定是要并行一段时间的,这个期间,人工投入会加倍,尽量增加前期的测试,可缩短这个过程。


以上经验,参考

------解决方案--------------------
先梳理业务关系,建立新系统,把旧系统的数据往新系统同步,等到旧的系统数据同步好后,直接使用新系统。
------解决方案--------------------
先重整数据字典再做其他
------解决方案--------------------
1、先整理好旧系统的表、视图、存储过程、触发器……相关内容,去掉一些不用的。
2、分析好新系统中的表。
3、确定好旧系统与新系统中表及列的对应关系。
4、写个程序,能够一次将旧系统的资料全部导入到新系统中。
5、准备好测试,就先跑一遍程序,将旧系统资料导入到新系统中。
6、新旧两个系统同时跑,对比测试。
7、一段时间后,如果没问题,停掉旧系统。
8、如果有问题,更改问题。如涉及到表或列,与要相应修改程序,保证能够将旧系统的资料全部导入到新系统中。
9、最终测试完成,根据情况,如果新系统中的内容有问题,可以全部删除掉,用上面的程序再跑一遍,将旧系统的资料全部导入到新系统中。
------解决方案--------------------
其实按照楼主所说,升级数据库是不必要的——个人认为

先确定目的:为什么要升级数据库?
——感觉是楼主为了提高程序处理业务流程的效率、速度、标准性
——问题并不是出现在“数据库的版本”。
——而是出现在“程序与数据库的不规范”。

另外一个方面
700个表;表字段及其多。
——这种情况下,你打算去重做这个系统吗?确定不会遇到阻力?
——不要说领导签字同意,大的企业或者单位,这没用。出现问题背黑锅的还是改动的人。

好好地做优化吧。
1、程序方面的优化
2、数据库优化

最后多嘴提醒一点:你真的认为人家开发的时候没有做数据库字典吗?稍微思考一下。
------解决方案--------------------
新系统做出来,确定没问题了,做一次割接,老系统的数据什么的一次斩断关系。

怎么确定新系统没有问题?
1. 可以通过老系统的数据,在新系统做测试;
或者
2. 可以用新版本的程序把部分用户用到新数据库上;


------解决方案--------------------
开发新系统,测试,导入旧系统测试,完成后再交割。。不需要实时同步
------解决方案--------------------
引用:
.....
A方案:用新的数据库
好处:根据现有的业务需求,整理业务模型,设计的数据库,肯……
B方案:保持数据库结构不变


....现在数据库里面大量的存储过程,触发器,很多视图,然后有很多SQL效率低下,经常导致系统动不了了.....

因为有 触发器 这个地雷,基本上 B方案:保持数据库结构不变 就被否决了