我需要简单地将列的大小从VARCHAR(36)调整为VARCHAR(40)。
如果您尝试使用SQL Server企业管理器,则它生成的脚本将有效地创建一个具有新结构的新表,将现有表中的所有数据插入其中,删除现有表,重命名新表,并重新创建任何索引。
如果您阅读了文档(以及包括SO在内的许多在线资源),则可以使用ALTER语句来调整大小。
ALTER是否会以任何方式影响数据的存储方式?索引?统计?我希望避免由于这种修改而影响性能,因为表可能会变得很大。
发布于 2011-09-01 02:53:22
只需使用ALTER TABLE。SSMS有时有点,呃,愚蠢
您需要删除并重新创建依赖约束(FK、unique、index、check等)
但是,这只是一个元数据更改,对于任何大小的表都是非常快速的(除非您还将NOT NULL更改为NULL或将varchar更改为nvarchar或类似的更改)
发布于 2011-09-01 02:53:02
不,ALTER TABLE (http://msdn.microsoft.com/de-de/library/ms190273.aspx)才是微软打算做这种改变的方式。
如果不向命令中添加额外的选项,索引或统计信息将不会受到损害。数据丢失的可能性也没有给出,因为您只是让列变得更大。一切都会好起来的。
发布于 2011-09-01 03:45:21
不应该因为您提出的原因而在生产环境中使用SSMS对数据库结构进行更改。它会破坏大表中的性能。ALTER table是首选的方法,它速度更快,并且可以在测试后将其作为更改存储在源代码管理中以推送到prod。
https://stackoverflow.com/questions/7261909
复制相似问题