Der*_*omm 55
如果您通过如下的 T-SQL 语句执行此操作,则不会发生表删除,您可以安全地在生产环境中执行此操作:
alter table <table> alter column <column> nvarchar(biggernumber) [not] null
Run Code Online (Sandbox Code Playgroud)
如果您通过 SSMS 设计表 GUI 执行此操作,则将取决于它决定使用什么脚本来实现更改。有时它会将数据插入到临时表中,删除原始表,创建该表的新版本,然后将其插入到新表中。找出它将做什么的一个简单方法是单击“生成脚本”按钮并查看它计划执行的 T-SQL。
Mic*_*Sim 18
增加列的列宽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、