我在SQL SERVER 2008中有一个现有的表,其中一个列为NVARCHAR(MAX),并且其中只有少于10个字符的值。 该表正在生产中并且包含数据。
我有一个要求,我必须将此列从NVARCHAR(MAX)更改为NVARCHAR(50)。 T 他执行此操作时SQL Server会出现一些Truncation错误,即使该列中的数据少于10个字符。
这是我的剧本:
ALTER TABLE [dbo].[Table] ALTER COLUMN [Column1] NVARCHAR ( 50 ) NOT NULL
答案 0 :(得分:3)
首先使用此查询检查您的表数据:
SELECT DATALENGTH(Column_Name) AS FIELDSIZE, Column_Name
FROM Table_Name
如果一切正常,您可能已经检查了Prevent Saving Changes
选项。请按照以下步骤检查:
工具> 设计师取消选中阻止保存需要重新创建表格的更改
答案 1 :(得分:0)
如果您确定不会丢失数据,那么:
Update myTable set myNVMaxCol = left(coalesce(myNVMaxCol,''),50);
Alter table myTable alter column myNVMaxCol nvarchar(50) not null;