Sql server 改变列的长度

Sql server 改变列的长度,sql-server,Sql Server,我需要在500多个表中更改列的长度column\u length,这些表可能没有从10条记录到300万或400万条记录的记录 1) 该列可能只是普通列 create table test(column_length varchar(10)) 2) 列上可能包含非聚集索引 create table test(column_length varchar(10)) CREATE UNIQUE NONCLUSTERED INDEX column_length_ind ON test (column_

我需要在500多个表中更改列的长度
column\u length
,这些表可能没有从10条记录到300万或400万条记录的记录

1) 该列可能只是普通列

create table test(column_length varchar(10))
2) 列上可能包含非聚集索引

create table test(column_length varchar(10))

CREATE UNIQUE NONCLUSTERED INDEX column_length_ind ON test (column_length)
3) 列上可能包含
主键
聚集索引

创建表测试(列长度varchar(10))

alter table test在列长度上添加主键聚集索引

4) 该列可能是复合主键

5) 该列可能有外键引用

简而言之,
列的长度可以是任何内容

我只需要创建脚本,将列的长度从
varchar(10)
更改为
varchar(50)

我应该在修改之前删除索引,然后重新创建它们吗? 那么主键和外键呢

通过我的研究和测试,我发现

我可以在不删除主键或任何索引的情况下更改列的长度,但必须删除并重新创建外键


这是正确的假设吗?我需要对此进行验证。

是的,您应该能够修改列。根据我的经验,保留索引和主键会更快。

可能还需要在外键表上更改列以增加大小。因此,首先删除fk约束,然后修复forign kkey字段,然后修复主键字段,然后重新启用约束