如何将列从 nvarchar(max) 更改为 nvarchar(50)

Pra*_*ado 5 sql-server sql-server-2008

我在 SQL SERVER 2008 中有一个现有表,其列之一为 NVARCHAR(MAX),并且其中仅包含少于 10 个字符的值。该表正在生产中并且包含数据。

我有一个要求,必须将此列从 NVARCHAR(MAX) 更改为 NVARCHAR(50)。即使该列中的数据少于 10 个字符,SQL Server 在执行此操作时也会出现一些截断错误。

这是我的脚本:

ALTER TABLE [dbo].[Table] ALTER COLUMN [Column1] NVARCHAR ( 50 ) NOT NULL 
Run Code Online (Sandbox Code Playgroud)

小智 5

首先使用以下查询检查您的表数据:

SELECT DATALENGTH(Column_Name) AS FIELDSIZE, Column_Name 
FROM Table_Name 
Run Code Online (Sandbox Code Playgroud)

如果一切正常,您可能已经检查了该Prevent Saving Changes选项。请按以下步骤检查:

工具 > 设计器取消选中防止保存需要重新创建表的更改