我有一个SQL Server 2014数据库,它基本上由一个主表和一些与它有外键关系的子表组成。他们又拥有自己的子桌。就SQL复杂性而言,这个数据库并不特别(也没有BLOB字段),并且它在磁盘上的大小小于50 MB。
但是,需要调整此主表中的一个列的大小,从nvarchar(500)到nvarchar(MAX)。我无法在SSMS中编辑它,并告知我需要删除并重新创建表。
我知道我可以使用SSMS中的Generate Scripts
选项来重新创建和重新填充数据库,但这看起来有点矫枉过正?
我真的想关闭涉及该主表的任何约束,使用新列大小删除并重新创建它,从脚本重新加载其数据,然后再次打开这些约束。但是,我们现在正在研究我的SQL专业知识,我不确定如何最好地做这样有限的操作并且会喜欢建议?
答案 0 :(得分:1)
只需使用ALTER TABLE命令调整列的大小:
ALTER TABLE MyTable
ALTER COLUMN MyColumn NVARCHAR(MAX) NULL -- Or NOT NULL, as required
根据更改列大小的文档:
您可以更改列的长度,精度或比例 在ALTER COLUMN中为列数据类型指定新大小 条款。如果列中存在数据,则新大小不能小 而不是数据的最大大小。