我现有的数据库位于SQL Server 2005 - 版本9.0.5000上。迁移到SQL Server 2008 R2
我们有一个包含5亿多行数据的庞大表格。列PriceListDate
定义为varchar(8)
,是复合主键的一部分。更糟糕的是,该表在此列上进行了分区。
由于现在有机会重新构建数据库,我正在考虑将此数据类型的数据类型更改为integer
。但是,似乎没有简单的方法可以做到这一点,但是要创建另一个具有新数据类型的表,请迁移数据,然后删除旧表和分区方案和函数。
有关使用此方法需要注意什么的任何指示?或者是否有另一种更好的方法?
拉吉
答案 0 :(得分:1)
以下是一些想法:
如果您保持原样,您可以将此旧表作为历史记录表,使用新的layoyut为新数据创建另一个表,并创建一个视图和/或SP来访问它们或所需的一个。
如果决定更改数据类型: - 由于该过程应该是可控的,因此无论如何都应该分批进行 - 利用现有的分区会很好。
我的解决方法是: 设置3个表:Old_Big_Table,Temp_table(具有旧结构,索引,分区)和New_Table(具有新结构,在不同的分区方案和功能上)
对于每个分区:
在步骤7中,不必在任何PS和PF上创建旧索引。因为索引的结构是相同的就足够了。