【发布时间】:2017-04-16 09:14:35
【问题描述】:
我遇到需要将不同表中的列从 INT 更改为 BIGINT 的情况。问题是其中一些表中有约束、索引、键和数据;其中一些是相互关联的。 我创建了一系列步骤来完成这项工作,我会感谢您的意见。
标识表中的列。 SELECT SCHEMA_NAME(schema_id) AS schema_name, t.name AS table_name, c.name AS column_name FROM sys.tables AS t INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID WHERE 1=1 AND c.name LIKE '% columnname%' ORDER BY schema_name, table_name;
选择一个表并生成脚本以创建和删除每个约束、键和索引。
创建一个与选取的表具有相同结构的新表,但将所需列创建为 BIGINT 而不是 INT。
将旧表中的行插入到新表中。
为旧表中的每个约束、键和索引运行 DROP 脚本。
删除旧表中的所有行。
更改旧表以将所需列从 INT 修改为 BIGINT。
为旧表中的每个约束、键和索引运行 CREATE 脚本。
将新表中的行插入到旧表中。
转到第 2 步,选择另一个表并重复。
您认为这是一个好计划吗?我也感谢任何有关备份计划的建议。
【问题讨论】:
标签: sql-server