1

我现有的数据库在 SQL Server 2005 - 版本 9.0.5000 上。迁移到 SQL Server 2008 R2

我们有一个包含 500+ 百万行数据的巨大表格。列PriceListDate被定义为varchar(8)复合主键并且是复合主键的一部分。更糟糕的是,该表在此列上进行了分区。

由于现在有机会改造数据库,因此我正在考虑将数据类型更改integer为该列的数据类型。但是,这样做似乎没有简单的方法,而是使用新数据类型创建另一个表,迁移数据,然后删除旧表和分区方案和功能。

关于使用这种方法要注意什么的任何指示?还是有其他更好的方法?

拉吉

4

1 回答 1

1

以下是一些想法:

如果您保持原样,您可以将这个旧表作为历史表,为新数据创建另一个带有新布局的表,并创建一个视图和/或 SP 以访问它们或所需的一个。

如果决定更改数据类型: - 由于过程应该是可控的,所以无论如何都应该分批完成 - 利用现有的分区会很好。

我的解决方案是:设置 3 个表:Old_Big_Table、Temp_table(具有旧结构、索引、分区)和 New_Table(具有新结构,在不同的分区方案和功能上)

对于每个分区:

  1. 将 1 个分区切换到 Temp_table
  2. 删除索引
  3. 更改数据类型
  4. 根据新 PS 和 PF 上的新布局创建索引
  5. 将分区切换到 New_table
  6. 删除 Temp_table 上的新索引
  7. 在旧 PS 和 PF 上的 Temp_table 上创建旧索引
  8. 可选:将本次迭代的结果记录到 Log_table

在第 7 步中,在任何 PS 和 PF 上创建旧索引并不是绝对必要的。只要索引的结构相同,就足够了。

于 2013-05-29T15:39:25.290 回答