You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server创建含VARCHAR(MAX)主键的utilizatori表失败求助

问题解决:SQL Server中VARCHAR(MAX)无法作为主键

错误原因

SQL Server禁止将VARCHAR(MAX)、NVARCHAR(MAX)这类大字段类型作为聚集索引(主键默认绑定聚集索引)的键列,这就是触发Msg 1919错误的核心原因。

修正方案

将email列的类型从VARCHAR(MAX)改为合理的固定长度,比如VARCHAR(255)——根据RFC标准,邮箱地址最大长度为254个字符,255的长度足够覆盖所有合法场景,同时满足SQL Server索引键的长度限制(聚集索引键总长度不能超过900字节)。

修正后的创建表脚本:

CREATE TABLE [dbo].[utilizatori] 
(
    [email]   VARCHAR (255) NOT NULL,
    [parola]  VARCHAR (MAX) NULL,
    [nume]    VARCHAR (MAX) NULL,
    [prenume] VARCHAR (MAX) NULL,
    PRIMARY KEY CLUSTERED ([email] ASC)
);

补充说明

如果业务特殊要求必须保留VARCHAR(MAX)类型,可考虑将主键设置为非聚集索引,但这种方式不推荐:

  • 非聚集索引在大字段上的查询性能远低于聚集索引
  • 即使是非聚集索引,SQL Server对大字段作为键列也有诸多限制,实际使用中容易引发其他问题

内容的提问来源于stack exchange,提问作者BeneIonut2208

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 15:22:05