为什么SSMS在尝试将列从varchar(8000)更改为varchar(MAX)时会丢弃并重新创建表?

时间:2016-09-07 16:39:43

标签: sql-server ssms

当尝试将表中的列从varchar(8000)更改为varchar(MAX)时,SSMS会生成一个脚本,该脚本删除表上的约束,创建新表,将旧表中的所有数据插入到new,从旧表中删除外键,删除旧表,重命名新表,然后在新表上重新创建外键。这通常比运行' ALTER TABLE TableA ALTER COLUMN ColumnA varchar(MAX)'?更安全我什么时候想运行SSMS生成的脚本vs' ALTER TABLE TableA ALTER COLUMN ColumnA varchar(MAX)'脚本?

1 个答案:

答案 0 :(得分:-2)

它们在功能上并不相同。 VARCHAR(8000)最多包含8,000个字符。 VARCHAR(MAX)在技术上可以存储最多2 ^ 31 - 1(2,147,483,647)个字符。

https://technet.microsoft.com/en-us/library/ms176089(v=sql.110).aspx