unicode字符上的SQL Server唯一约束问题

unicode字符上的SQL Server唯一约束问题,sql,sql-server,unicode,unique-constraint,Sql,Sql Server,Unicode,Unique Constraint,我的表定义如下: create table [Language]( Id int primary key identity, Code varchar(11) not null unique, NativeName nvarchar(50) not null unique ) 然后,我有一长串语句插入到这个表中。问题是一些insert语句与myNativeName列的唯一约束冲突。奇怪的是,内容一点也不独特。例如,如果我仅在表格为空时插入以下内容: insert into Language (

我的表定义如下:

create table [Language](
Id int primary key identity,
Code varchar(11) not null unique,
NativeName nvarchar(50) not null unique
)
然后,我有一长串语句插入到这个表中。问题是一些insert语句与my
NativeName
列的唯一约束冲突。奇怪的是,内容一点也不独特。例如,如果我仅在表格为空时插入以下内容:

insert into Language (Code, NativeName) values('am', N'አማርኛ');
insert into Language (Code, NativeName) values('dv', N'ދިވެހިބަސް‏');
我得到了第二个插入

Violation of UNIQUE KEY constraint 'UQ__Language__EB1957A5F98D1F9C'. Cannot insert duplicate key in object 'dbo.Language'. The duplicate key value is (ދިވެހިބަސް‏).

有人知道为什么unicode字符会导致这些问题吗?

尝试使用更具体的(二进制)排序规则声明NativeName列

例如:


听起来像是排序问题。看,我知道这个查询需要某种排序修正,但是你是如何计算出哪种排序能够完成这项工作的,就我所看到的这两种不同的语言而言,OP正在尝试插入这个查询。请你解释一下,谢谢你:)@MuhammedAli关键是它是一个二进制排序规则-我选择这个是因为它是一个通用的,而不是一个语言排序规则,但很可能任何二进制排序规则都会起作用。这就成功了,谢谢你。老实说,我完全不知道发生了什么事。我想我必须对整个排序问题做一些研究。请帮助我理解你的答案:它是否重现了这个问题(并因此回答了为什么…?)还是修复了它?@AndriyM这将修复它。
 NativeName nvarchar(50) collate SQL_Latin1_General_CP437_BIN not null unique