ストームからの回答にいくつかの追加手順を追加する必要があることがわかりました。クラスター化インデックスを削除する前に、その前にクラスター化インデックスを削除できないため、パブリケーションを削除する必要があるなどの点があるためです。これらのパーティションスキームとパーティション関数を削除した後、再作成する必要があり、公開も再度開始する必要があります。
注: SQL 2012 を使用しています。
主キーは通常、最も一般的に使用されるクラスター化された制約であるため、主キーを使用した場合は、これらの手順がクラスター化された制約にも適用されることを考慮してください。また、PS = パーティション スキーム、PF = パーティション機能。
いくつかの準備手順:
- ドロップ パブリケーション スクリプトを作成する
- パブリケーション作成スクリプトを作成する
- パーティション スキームとの依存関係があるすべてのテーブルを特定し、それらの主キー/クラスター化インデックスも書き留めます。また、主キー列が使用するすべてのフィールドを書き留めます (主キーまたはクラスター化インデックスのスクリプトを生成することをお勧めします)。
- 影響を受けるテーブルのスクリプトを作成します。
- 問題の PF と PS のスクリプトを作成します。
上記のすべて、右クリック時に SQL Management Studio の「スクリプトを生成」を使用します。そして、ドロップして作成を選択します。
さあ、すべての準備が整いました。
1. パブリケーションを削除します (生成したスクリプトを使用します)
。 2. PS にリンクされているテーブルの主キー制約を削除します。
alter table [tablename] drop constraint [pk_name]
3. ダミーの制約を作成しますが、削除した主キーで使用したのと同じフィールドを使用します。CREATE CLUSTERED INDEX CIDX_X1 ON tablename(field1,field2,field3,field4) ON [PRIMARY]
4. パーティション構成と機能を削除します。
DROP PARTITION SCHEME [PartitionSchemeName_PS]
GO
DROP PARTITION FUNCTION [PartitionfunctionName_PF]
GO
- ダミー インデックスを削除する
DROP INDEX CIDX_X1 ON tablename
- クラスター化されたインデックス/主キーの制約を元に戻します (前述のように生成されたスクリプトを使用します。
- パーティション関数とパーティション スキーマを作成します (PS > PF の要素数であることを確認します。ここで、PS = PF+2 要素)。
- パブリッシャーを追加し直します (生成されたスクリプトを使用します)