是否为无法用作索引中的键列的类型?

Res*_*hma 7 sql-server

我想创建一个名为的表tbl_Ticket_Mail_Address.创建表时显示错误.

表:

CREATE TABLE [dbo].[tbl_Ticket_Mail_Address] (
    [Id]           INT            IDENTITY (1, 1) NOT NULL,
    [Designation]  NVARCHAR (MAX) NULL,
    [Emp_ID]       NVARCHAR (MAX) NOT NULL,
    [Emp_Name]     NVARCHAR (MAX) NULL,
    [Mobile]       NVARCHAR (MAX) NULL,
    [Emp_Email]    NVARCHAR (MAX) NULL,
    [Category]     NVARCHAR (MAX) NULL,
    [Created_By]   NVARCHAR (MAX) NULL,
    [Created_Date] DATE           NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC),
    CONSTRAINT [uc_tbl_Ticket_Mail_Address] UNIQUE NONCLUSTERED ([Emp_ID] ASC, [Category] ASC)
);
Run Code Online (Sandbox Code Playgroud)

58,1):SQL72014:.Net SqlClient数据提供程序:消息1919,级别16,状态1,行1列'tbl_Ticket_Mail_Address'中的列'Emp_ID'属于无法用作索引中的键列的类型.(57,5):SQL72045:脚本执行错误.执行的脚本:

CREATE TABLE [dbo].[tbl_Ticket_Mail_Address] (
    [Id]           INT            IDENTITY (1, 1) NOT NULL,
    [Designation]  NVARCHAR (MAX) NULL,
    [Emp_ID]       NVARCHAR (MAX) NOT NULL,
    [Emp_Name]     NVARCHAR (MAX) NULL,
    [Mobile]       NVARCHAR (MAX) NULL,
    [Emp_Email]    NVARCHAR (MAX) NULL,
    [Category]     NVARCHAR (MAX) NULL,
    [Created_By]   NVARCHAR (MAX) NULL,
    [Created_Date] DATE           NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC),
    CONSTRAINT [uc_tbl_Ticket_Mail_Address] UNIQUE NONCLUSTERED ([Emp_ID] ASC, [Category] ASC)
);
Run Code Online (Sandbox Code Playgroud)

(58,1):SQL72014:.Net SqlClient数据提供程序:消息1750,级别16,状态0,行1无法创建约束或索引.查看以前的错误.(57,5):SQL72045:脚本执行错误.执行的脚本:批处理执行时发生错误.

Dea*_*nOC 17

SQL Server不允许您使用nvarchar(max)列创建唯一索引.在D_T_U评论时,选择较小的尺寸,例如nvarchar(100),您将能够创建索引.

当然,柱尺寸需要符合您的要求,因此100只是一个例子.

额外信息:创建索引时,请记住组合索引值的大小不得超过900个字节.每个nvarchar字符将使用2个字节,因此您最多可以具有组合大小nvarchar(450).例如,在你的情况下,你可以

[Emp_ID] NVARCHAR (50) NOT NULL,
[Category] NVARCHAR (400) 
Run Code Online (Sandbox Code Playgroud)

只要任何给定行上的数据不超过900字节,就可以为nvarchar列声明更大的大小,但这是危险的.例如,如果将两个列声明为nvarchar(300),则会收到以下消息:

警告!最大密钥长度为900字节.索引'uc_tbl_Ticket_Mail_Address'的最大长度为1200字节.对于某些大值组合,插入/更新操作将失败.