我有一个空表,其中所有列都设置为“NOT NULL”。我想将它设置为ALLOW NULL而不重新创建表。
我该怎么做?我正在使用SQL Server 2008 r2和管理工作室。
修改 - 我想将所有列设置为允许null,而不必知道列的数据类型。也就是说,将all设置为null,同时保持数据类型与以前相同。
答案 0 :(得分:0)
ALTER COLUMN 指定要更改或更改命名列。 修改后的列不能是以下任何一种:
具有时间戳数据类型的列。
• 表格的ROWGUIDCOL。
• 计算列或在计算列中使用。
• 在索引中使用,除非该列是varchar,nvarchar或varbinary数据类型,数据类型不会更改,新大小等于或大于旧大小,并且索引不是PRIMARY KEY的结果约束
• 除非列是varchar,nvarchar或varbinary数据类型,数据类型未更改,新大小等于或大于旧大小,从非null到null。首先,使用DROP STATISTICS语句删除统计信息。 ALTER COLUMN会自动删除由查询优化器自动生成的统计信息。
• 用于PRIMARY KEY或[FOREIGN KEY] REFERENCES约束。
• 用于CHECK或UNIQUE约束。但是,允许更改CHECK或UNIQUE约束中使用的可变长度列的长度。
• 与默认定义相关联。但是,如果未更改数据类型,则可以更改列的长度,精度或比例。
text,ntext和image列的数据类型只能通过以下方式更改: ◦ text到varchar(max),nvarchar(max)或xml
◦ ntext到varchar(max),nvarchar(max)或xml
◦ 图像到varbinary(最大)
某些数据类型更改可能会导致数据发生更改。例如,将nchar或nvarchar列更改为char或varchar可能会导致扩展字符的转换。有关更多信息,请参阅CAST和CONVERT(Transact-SQL)。降低列的精度或比例可能会导致数据截断。
无法更改分区表的列的数据类型。
该文件可在此处找到: http://msdn.microsoft.com/en-us/library/ms190273(v=sql.105).aspx