2012-01-03 17 views
6

Tengo una tabla que está dividida por TRANSACTION_DATE_TIME.Partición del servidor SQL - Error de índice único

La tabla tiene una columna: ID.

Quiero crear un índice único para la identificación en el esquema de partición como:

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

pero SQL dice "la columna de partición de un índice único debe ser un subconjunto de clave de índice".

Realmente no necesito la columna TRANSACTION_DATE_TIME en este índice.

¿Cómo puedo crear el índice sin utilizar la columna TRANSACTION_DATE_TIME?

Respuesta

8

O crear NO índice -partitioned, o TIENE para incluir la clave de partición en el índice particionado como esto:

índice con particiones

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

O

Índice sin particiones

CREATE UNIQUE NONCLUSTERED INDEX [IX_ID_ON_PS_DATETIME] ON [CRD].[TRANSACTION] 
(
    [ID] ASC 
) ON PRIMARY 
0

Desde la página de Microsoft TechNet

Al particionar un índice único (agrupado o no agrupado), la columna de la partición debe ser elegido de entre los que se usan en la clave índice único. Si no es posible que la columna de partición sea incluida en la clave única, debe utilizar un desencadenador DML en su lugar para exigir exclusividad.

Así que para poner en práctica una solución se puede comprobar a cabo este enlace ... una solución desde el blog y otro en los comentarios

Dealing with Unique Columns when Using Table Partitioning

Cuestiones relacionadas