尝试将NVARCHAR(max)列更改为VARCHAR(max)时,出现错误:
“无法创建大小为8063的行,该大小大于允许的最大行大小8060。”
这是正确的,因为存储Unicode字符需要不同的空间。但是有没有办法强制SQL Server进行此转换?
编辑:表定义和更改命令:
CREATE TABLE [Descriptions](
[SerialNo] [varchar](20) NOT NULL,
[LanguageCode] [char](2) NOT NULL,
[Note] [nvarchar](max) NOT NULL,
[Address] [varchar](2000) NOT NULL,
[StoreId] [varchar](3) NULL,
CONSTRAINT [UK_Descriptions] UNIQUE NONCLUSTERED
(
[SerialNo] ASC,
[LanguageCode] ASC,
[StoreId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
-- Alter column:
ALTER TABLE [Descriptions] ALTER COLUMN [Note] varchar(max) NOT null;
nvarchar(max)
和varchar(max)
都可以被存储在页外,因此它们只会对行大小限制做出指针贡献。这里一定还有其他问题,请您发布表定义吗? - Andomar