2012-01-03 92 views
6

我有一個由TRANSACTION_DATE_TIME分區的表。SQL Server分區 - 唯一索引錯誤

表中有一列:ID。

我想在分區方案作爲創建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列的情況下創建索引?

回答

8

或者你創建 -partitioned索引,或者你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 
0

從在TechNet微軟頁

當分區的唯一索引(clustered或非聚集)時, 分區列必須選自那些在唯一 索引關鍵字使用來選擇。如果不可能將分區列設置爲唯一密鑰中包含的 ,則必須使用DML觸發器來代替 實施唯一性。

因此,要實現一種變通方法,您可以檢查此鏈接了...從博客一個變通方法,另一個在評論

Dealing with Unique Columns when Using Table Partitioning