SQL2005X64+Windows2003X64环境下迁移X32SQL2005数据库遇到的问题

SQL2005X64+Windows2003X64环境下迁移X32SQL2005数据库遇到的问题如下:

1)迁移后数据库间断性出现访问阻塞(该现象迁移前已存在);

2)在实例/LOG/下不定期生成内存转储文件(* .MDMP),24小时内撑爆300GB硬盘;

3)DBCC操作不响应,重启实例服务后可以DBCC,结果报错:(1)页分配错误(2)出现重复数据;

问题分析:

1)问题可能是表部分区间索引损坏,原数据库表设计在一个大文件上,数据库文件所在盘使用了热备份文件镜像,造成访问阻塞;

2)数据库某个环节出现错误,所以出现报错*.MDMP,问题极有可能是DBCC出现的错误;

3)数据库主文件已经超过50GB,对于I/O操作响应可能低效。

4)数据库主要表的写IO与读IO未分离,在同一个物理文件上,该文件还在镜像上;

解决办法:

第一阶段:重点解决DBCC错误问题

重建可能出现问题的数据表(只能根据业务判断,并确认),具体方法:建立新表,将老表数据通过DTC导入,删除老表,重命名新表;

该操作完成后,DBCC-TABLE正常;但是DBCC REPARI全库仍然有页分配错误;

第二阶段:根据第一阶段处理结果,判断数据库已经出现不可修复问题

以脚本重建数据库,将老数据库全部表通过DTC导入新库;启用新库,停用老库。

该操作完成后,(* .MDMP)文件不再生成,从此确认老库存在不可修复页分配错误。

但是仍然存在数据访问阻塞。

第三阶段:根据前面的处理结果,判断访问阻塞的原因应该是当前数据库业务本身设计策略的问题

停用该数据库文件的自动镜像;

按每半个月分一个物理文件对主数据表进行分区(分区的区间根据表的数据量设置,经过测试SQL2005需要保证每表记录数在1500万条左右为性能最佳点);并将分区文件均匀分在不同硬盘上;

再次观察,数据库运行正常!!

以上记录仅仅为特定案例处理方法,是否有通用性请看客斟酌。

你可能感兴趣的:(脚本)