6

テーブルを新しいファイル グループに移動したいと考えています。受け入れられた回答を出発点として使用する:

CREATE CLUSTERED INDEX CIX_YourTable
   ON dbo.YourTable(YourClusteringKeyFields)
   WITH DROP_EXISTING
   ON [filegroup_name]

私はそれを私の用途に合わせます:

CREATE CLUSTERED INDEX PK_AuditLog_AuditLogID
   ON dbo.AuditLog(AuditLogID)
   WITH DROP_EXISTING
   ON [TheOtherFileGroup]

エラーが発生します:

メッセージ 1907、レベル 16、状態 1、行 1
インデックス 'PK_AuditLog_AuditLogID' を再作成できません。新しいインデックス定義は、既存のインデックスによって適用されている制約と一致しません。

これは、私が推測する、PK_AuditLog_AuditLogIDなぜなら

  • クラスタ化されたインデックス
  • 主キー

したがって、主キーのクラスター化インデックスを作成するための構文が必要ですWITH DROP_EXISTING

4

2 に答える 2

17
CREATE UNIQUE CLUSTERED INDEX PK_AuditLog_AuditLogID
   ON dbo.AuditLog(AuditLogID)
   WITH DROP_EXISTING
   ON [TheOtherFileGroup]

論理主キー制約保持されます (ただし、2012 年にテスト済み)

CREATE TABLE dbo.AuditLog
(
AuditLogID int constraint PK_AuditLog_AuditLogID primary key
)


CREATE UNIQUE CLUSTERED INDEX PK_AuditLog_AuditLogID
   ON dbo.AuditLog(AuditLogID)
   WITH DROP_EXISTING
   ON [Primary]



SELECT CONSTRAINT_TYPE  /*Returns PRIMARY KEY*/
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE CONSTRAINT_NAME = 'PK_AuditLog_AuditLogID'
于 2012-06-27T14:08:25.070 に答える