我有一种情况需要在不同的表中将列从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步,选择另一个表并重复。
你认为这是一个好计划吗?我也很感谢任何有关备份计划的建议。