【发布时间】:2016-09-07 16:39:43
【问题描述】:
当尝试将表中的列从 varchar(8000) 更改为 varchar(MAX) 时,SSMS 会生成一个脚本,该脚本会删除表上的约束,创建一个新表,将旧表中的所有数据插入到new,从旧表中删除外键,删除旧表,重命名新表,然后在新表上重新创建外键。这通常比仅运行“ALTER TABLE TableA ALTER COLUMN ColumnA varchar(MAX)”更安全吗?我什么时候想运行 SSMS 生成的脚本与“ALTER TABLE TableA ALTER COLUMN ColumnA varchar(MAX)”脚本?
【问题讨论】:
-
我认为我们无法回答原因 - 这当然取决于 SSMS/Microsoft 脚本引擎的设计者。我们只能猜测。
-
这个问题不是关于如何强制 SSMS 创建更简单的脚本。我在问一个脚本是否比另一个更安全,或者它们在功能上是否相同。
-
在那种情况下,我想不出您何时想要运行自动生成的版本,几乎总是有一种更明智的方式来编写任何可能的更改,因为您建议更改列就地,或者最坏的情况是删除键和约束,添加新列,移动值,删除旧列,重命名新列,重新创建约束。
-
@Chris - 如果您转到已链接到的问题,您会看到尽管有标题,但它还会询问 SSMS 这样做是否有原因,就像您问的那样。接受的答案也非常相关。
标签: sql-server ssms