Answers:
如果通过如下所示的T-SQL语句执行此操作,则不会发生表删除,并且可以在生产环境中安全地执行此操作:
alter table <table> alter column <column> nvarchar(biggernumber) [not] null
如果通过SSMS设计表GUI进行操作,则取决于它决定使用哪种脚本来实施更改。有时,它将数据插入临时表中,删除原始表,创建该表的新版本,然后将其重新插入新表中。一种简单的方法是单击“生成脚本”按钮,然后查看计划执行的T-SQL。
增加列的列宽nvarchar
不需要删除表。任何ALTER TABLE
操作都不会。有关更改表或列属性时的限制的详细信息,可以阅读ALTER TABLE语句。
我从以下文档中复制了最相关的部分:
更改列的大小
您可以通过在ALTER COLUMN子句中为列数据类型指定新的大小来更改列的长度,精度或小数位数。如果列中存在数据,则新大小不能小于数据的最大大小。另外,除非列是varchar,nvarchar或varbinary数据类型,并且索引不是PRIMARY KEY约束的结果,否则无法在索引中定义该列。参见示例P。
锁和ALTER TABLE
ALTER TABLE中指定的更改将立即实施。如果更改需要修改表中的行,则ALTER TABLE将更新行。ALTER TABLE在表上获取模式修改锁,以确保更改期间没有其他连接甚至引用该表的元数据,但最后需要非常短的SCH-M锁的联机索引操作除外。在ALTER TABLE…SWITCH操作中,将在源表和目标表上获取锁定。对表所做的修改将被记录并且可以完全恢复。影响很大表中所有行的更改(例如删除列或使用默认值添加NOT NULL列)可能需要很长时间才能完成并生成许多日志记录。这些ALTER TABLE语句应与任何INSERT,UPDATE,