2012-01-03 23 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

それともNON -partitionedインデックスを作成するか、またはあなたがこのようなパーティション索引にパーティション化キー含めるを持っている

パーティション索引

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

を非パーティションインデックス

TechNetのマイクロソフトのページから
CREATE UNIQUE NONCLUSTERED INDEX [IX_ID_ON_PS_DATETIME] ON [CRD].[TRANSACTION] 
(
    [ID] ASC 
) ON PRIMARY 
0

一意のインデックス(クラスタ化または非クラスタ化)を分割すると、 パーティション化列がユニーク インデックスキーで使用されているものの中から選択する必要があります。パーティション化列がユニークキーに含まれている であることができない場合は、 一意性を強制する代わりにDMLトリガーを使用する必要があります。

ですから、このリンクをチェックアウトすることができます回避策を実装するには... 1つのブログからの回避策やコメント内の別の1

Dealing with Unique Columns when Using Table Partitioning

関連する問題