在不同的表

时间:2016-12-01 16:26:28

标签: sql-server

我有一种情况需要在不同的表中将列从INT更改为BIGINT。问题是这些表中的一些表中有约束,索引,键和数据;其中一些是相互关联的。 我创建了一系列步骤来完成这项工作,我将非常感谢您的意见。

  1. 识别表格中的列。 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;

  2. 选择一个表并生成脚本以创建和删除每个约束,键和索引。

  3. 创建一个与拾取的表具有相同结构的新表,但是将所需的列创建为BIGINT而不是INT。

  4. 将旧表格中的行插入新表格。

  5. 为旧表中的每个约束,键和索引运行DROP脚本。

  6. 删除旧表中的所有行。

  7. 更改旧表以将所需列从INT修改为BIGINT。

  8. 为旧表中的每个约束,键和索引运行CREATE脚本。

  9. 将新表格中的行插入旧表格。

  10. 转到第2步,选择另一个表并重复。

  11. 你认为这是一个好计划吗?我也很感谢任何有关备份计划的建议。

0 个答案:

没有答案