13

テーブル「X」があり、次のことを行いました

  1. 値 (1、2、3、4) の左範囲としてパーティション関数 PF1(INT) を作成します。
  2. パーティション スキーム PS1 をパーティション PF1 としてすべて作成 ([プライマリ])
  3. PS1(col1) の X(col1) にクラスター化インデックス CIDX_X を作成します。

この 3 つの手順により、私が持っていたデータの 4 つの論理パーティションが作成されました。

私の質問は、このパーティショニングを元の状態に戻すにはどうすればよいですか?

4

2 に答える 2

32

2日間の継続的な検索の後

手順:

  1. DROP INDEX CIDX_X on X/* クラスター化されたものをドロップします */
  2. CREATE CLUSTERED INDEX CIDX_X1 ON X(col1) ON [PRIMARY]/* テーブルに別のクラスター化インデックスを作成して、パーティション分割スキームから解放します。ここで、「ON [primary]」の部分は、テーブルからパーティション スキームを削除するための鍵です。*/
  3. DROP PARTITION SCHEME PS1
  4. DROP PARTITION FUNCTION PF1
  5. DROP INDEX CIDX_X1 ON X/* パーティション スキームからテーブルを解放するためだけに作成されたため、作成したダミーのクラスター化インデックスを削除します */
于 2010-06-08T05:53:42.287 に答える
2

ストームからの回答にいくつかの追加手順を追加する必要があることがわかりました。クラスター化インデックスを削除する前に、その前にクラスター化インデックスを削除できないため、パブリケーションを削除する必要があるなどの点があるためです。これらのパーティションスキームとパーティション関数を削除した後、再作成する必要があり、公開も再度開始する必要があります。

注: SQL 2012 を使用しています。
主キーは通常、最も一般的に使用されるクラスター化された制約であるため、主キーを使用した場合は、これらの手順がクラスター化された制約にも適用されることを考慮してください。また、PS = パーティション スキーム、PF = パーティション機能。

いくつかの準備手順:

  1. ドロップ パブリケーション スクリプトを作成する
  2. パブリケーション作成スクリプトを作成する
  3. パーティション スキームとの依存関係があるすべてのテーブルを特定し、それらの主キー/クラスター化インデックスも書き留めます。また、主キー列が使用するすべてのフィールドを書き留めます (主キーまたはクラスター化インデックスのスクリプトを生成することをお勧めします)。
  4. 影響を受けるテーブルのスクリプトを作成します。
  5. 問題の 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
  1. ダミー インデックスを削除する DROP INDEX CIDX_X1 ON tablename
  2. クラスター化されたインデックス/主キーの制約を元に戻します (前述のように生成されたスクリプトを使用します。
  3. パーティション関数とパーティション スキーマを作成します (PS > PF の要素数であることを確認します。ここで、PS = PF+2 要素)。
  4. パブリッシャーを追加し直します (生成されたスクリプトを使用します)
于 2015-10-20T07:31:30.157 に答える