SQL Server将非Unicode字符作为重复项处理非唯一字段,但它们不重复

时间:2014-03-22 18:43:18

标签: sql sql-server unicode indexing unique-index

SQL Server将以下字符视为相同,但它们是不同的Unicode字符。当我在包含这些字符的列上放置一个唯一的非聚集索引时,SQL Server不允许我(抛出错误说有重复键,而它们不重复)。我已经在使用nvarchar来支持Unicode字符。

默认排序规则为SQL_Latin1_General_CP1_CI_AS(我需要支持波斯语/阿拉伯语字符以及所有拉丁语/印度语/中文/日语字符(Unicode))

// Some characters are unseen so please copy and paste the whole
// code area in a Unicode supported text editor.
ٔ
ؐ
ۡ
ۚ
ٝ
ﷲ
۠
ݐ
ݘ
ۖ
ۻ
ݝ
ݡ
ۗ
ﮎ
ػ
ﮒ
ﮪ
ݻ

以下是没有唯一索引的SQL Server CREATE语句(必须禁用TheWord字段上的唯一索引,因为如上所述,SQL Server将所有上述字符视为相同的字符(或者可能是我在这里遗漏了什么?))。

CREATE TABLE [peplamb].[Words](
    [WordId] [bigint] IDENTITY(1,1) NOT NULL,
    [TheWord] [nvarchar](128) NOT NULL,
    [SourceId] [int] NOT NULL,
    [DateModified] [datetime] NOT NULL,
    [DateCreated] [datetime] NOT NULL,
 CONSTRAINT [PK_Words] PRIMARY KEY CLUSTERED 
(
    [WordId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

我在这里错过了什么吗?

非常感谢任何帮助。

0 个答案:

没有答案