Sqlserver2005 文件组的折腾
问题:由于数据庞大,我在数据库里面使用了分区表,建了很多文件组,一个分区对应一个文件组,一个文件组只有一个文件。我在建分区表的时候,在数据库属性里面“文件”选项中,本来逻辑名称为“TradeDataDW201006”应该指向文件组“TradeDataDW201006”,但是刚开始弄错了指向文件组“TradeDataDW200906”,现在导致200906这个分区的数据分布在“TradeDataDW200906.ndf”和“TradeDataDW201006.ndf”上面,而将来的201006的分区却没有对应的文件组了。
问过几个认识的DBA朋友,还到微软的BBS里面去请教,学到了一个我以前不知道的知识,关于聚集索引的,聚集索引里存放的数据和表的数据必须在同一个文件组中,而且它们的顺序也是一致的。
这里还有一片其他的文章关于将一个表从一个文件组移到另一个文件组的http://www.windbi.com/showtopic-18.aspx
后来我自己的解决方法是:
通过数据库的收缩功能,具体操作为右键点数据库-》任务-》收缩-》文件,然后选择对应的文件组和文件名,通过将数据迁移到同一文件组的其他文件来清空文件。这样就把TradeDataDW201006.ndf的数据合并到TradeDataDW200906.ndf中去了,最后在数据库属性的文件里面,删除TradeDataDW201006那一行,确定,然后新增TradeDataDW201006,确定。搞定!
这里还有微软BBS上的rmiao,liu zhi等热心朋友提供的另外一个方法,我目前还没有做尝试。就是利用聚集索引的特性,重建聚集索引,这样数据就会自动分布到对应的文件上去。