月ごとに分割されたSQL DWテーブルがあります。数ヶ月前に私たちのDBAが動いたので、テーブルは分割されていません。私たちはテーブルの速度が遅くなったために気づいた。SQL DW - 分割を使用した分割
我々は、スプリット機能を使って、パーティションを追加しようとすると、我々は
下のエラーを取得するには、「パーティションが空ではないので、ALTER PARTITION文のSPLIT句に失敗しました。」
我々は、それが失敗したが、最後の行の後に次の
CREATE TABLE [data].[sessions_range]
WITH
(
CLUSTERED COLUMNSTORE INDEX,
DISTRIBUTION = HASH([sesh_id]),
PARTITION
(
-- SAMPLE RANGE
[session_start_dt] RANGE RIGHT FOR VALUES
(
'2016-12-01'
)
)
)
AS
SELECT *
FROM [data].[sessions]
WHERE 1=2
;
ALTER TABLE [data].[sessions] SWITCH PARTITION <guessed at a partition number>
TO [data].[sessions_range] PARTITION 2;
ALTER TABLE [data].[sessions] SPLIT RANGE ('2016-12-01');
そのを試してみました。私たちが範囲内の対応するパーティションを見つけるまで、パーティション番号を調べなければならなかったが、スイッチパーティションは問題なく動作しているようだ。
私たちが切り替えた後でも、分割中にパーティションがまだ空でないと言っている理由は誰でも助けてくれますか?
Columnstoreインデックスを無効にし、SPLITを実行してから、Columnstoreインデックスを再構築します。 Columnstoreがテーブルに存在する場合、空のパーティションのみが分割されます。ごめんなさい。 –
https://redphoenix.me/2014/08/18/how-to-split-non-empty-partitions-when-a-clustered-columnstore-index-exists-on-the-table/を参照してください。これに対処する方法について。 –
それは動作しません。 – Thomas