小编Dig*_*oug的帖子

在在线环境中对非常大的表进行结构更改

所以这就是我所面对的.

问题

  • 一张大桌子,行数约230,000,000.
  • 我们希望将此表的聚类索引和主键更改为简单的bigint标识字段.表中还添加了另一个空字段供将来使用.
  • 现有表具有复合键.为了争论,让我们说它是2个bigint.第一个可能在密钥的第二部分有1或10,000个'孩子'.

要求

  • 最短的停机时间,最好是运行SP_Rename所需的时间长度.
  • 在我们复制数据时,现有行可能会发生变化.更新必须反映在新表中.

思路

  1. 在现有表上放置一个触发器,以更新新表中的行(如果已存在).
  2. 遍历原始表,一次将数据复制到新表~10000.可能是旧密钥的第一部分中的2,000个.
  3. 复制完成后,将旧表重命名为"ExistingTableOld",将新表重命名为"NewTable"至"ExistingTable".这应该允许存储过程继续运行而无需干预

计划中是否有任何明显的遗漏,或者我忽略的最佳实践?

sql t-sql sql-server-2005

5
推荐指数
1
解决办法
130
查看次数

标签 统计

sql ×1

sql-server-2005 ×1

t-sql ×1