Разделение SQL Server - уникальная ошибка индекса - PullRequest
8 голосов
/ 03 января 2012

У меня есть таблица, которая разделена на TRANSACTION_DATE_TIME.

Таблица содержит столбец: ID.

Я хочу создать уникальный индекс для идентификатора в схеме секционирования как:

CREATE UNIQUE NONCLUSTERED INDEX [IX_ID_ON_PS_DATETIME] ON [CRD].[TRANSACTION] 
(
    [ID] ASC
) ON [PS_DATETIME_WEEKLY]([TRANSACTION_DATE_TIME])

но SQL говорит: «Столбец раздела для уникального индекса должен быть подмножеством ключа индекса».

Мне действительно не нужен столбец TRANSACTION_DATE_TIME в этом индексе.

Как создать индекс без использования столбца TRANSACTION_DATE_TIME?

Ответы [ 2 ]

10 голосов
/ 03 января 2012

Или вы создаете NON -раздельный индекс, или вы HAVE включаете ключ разделения в многораздельный индекс, например так:

Индекс с разделами

CREATE UNIQUE NONCLUSTERED INDEX [IX_ID_ON_PS_DATETIME] ON [CRD].[TRANSACTION] 
(
    [ID] ASC,
    TRANSACTION_DATE_TIME
) ON [PS_DATETIME_WEEKLY]([TRANSACTION_DATE_TIME])

OR

Индекс без разделов

CREATE UNIQUE NONCLUSTERED INDEX [IX_ID_ON_PS_DATETIME] ON [CRD].[TRANSACTION] 
(
    [ID] ASC
) ON PRIMARY
2 голосов
/ 07 октября 2015

Со страницы TechNet Microsoft

При секционировании уникального индекса (кластеризованного или некластеризованного) необходимо выбрать столбец секционирования из тех, которые используются в уникальном ключе индекса.Если столбец разделения не может быть включен в уникальный ключ, вместо этого необходимо использовать триггер DML, чтобы обеспечить уникальность.

Поэтому для реализации обходного пути вы можете проверить эту ссылку.один обходной путь из блога и другой в комментариях

Работа с уникальными столбцами при использовании разбиения таблиц

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...