我想创建一个名为的表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字节.对于某些大值组合,插入/更新操作将失败.