我有两个表,有1,000万到2,000万行,其中有GUID主键,至少有12张表与外键相关。基表每个有10-20个索引。
我们正在从GUID移动到BigInt主键。我想知道有没有人对这个方法有任何建议。现在,这就是我正在思考的方法:
这看起来是个好办法吗?有没有人知道有一个工具或脚本会对此有所帮助?
TD:按其他资料编辑。请参阅这篇博客文章,其中提到了GUID是主:http://www.sqlmag.com/blogs/sql-server-questions-answered/sql-server-questions-answered/tabid/1977/entryid/12749/Default.aspx时的一种方法
发布于 2010-04-28 06:36:42
这个策略听起来确实有效--删除约束,从下面更改列(类型更改,名称保持不变),然后重新创建约束是相当优雅的。
目标是最终删除GUID列吗?如果是这样的话,除非表被复制或重建,否则您不会实际回收空间,因此可能需要进行以下调整:
..。
4.编写数据更改脚本“更新表x,设置NewPrimaryKey =y,其中OldPrimaryKey =z”
5.将原始主键删除为“旧主键”
6.重命名“NewPrimaryKey”列“PrimaryKey”
7.用脚本返回所有索引和键(构建聚集索引“重构”表)
8.对于所有没有聚集索引的表,请做一些事情以确保它们得到重建,并恢复它们的空间(例如构建,然后删除聚集索引)。
不用说,在生产运行之前,在开发框上测试它吧!
发布于 2010-04-28 06:29:52
发布于 2010-04-28 06:45:50
我还要补充一句:
在启动之前,确保您有一个良好的当前备份。将服务器更改为以单用户模式运行(首先通知用户中断期间)。您不希望用户在进行此操作时尝试输入数据。
https://stackoverflow.com/questions/2730305
复制相似问题