SQL Server 2008 R2パーティショニング-同じファイルグループ、1つのファイル、2つのpartition_numbers-ヘルプ


10

SQL Serverでのパーティション分割は初めてです。BrentOzarのガイドから学びました。

数回、奇妙なシナリオに遭遇しました。私が走るとき:

SELECT *
FROM ph.FileGroupDetail
ORDER BY partition_number
Go

2つの異なるpartition_numbersで2回表示されている同じファイルグループがあり、1つは範囲値で最後に正しく、もう1つはnullのrange_valueで最初にあります。

画像を拡大するにはここをクリック

ここに画像の説明を入力してください

いくつかの質問:

  1. これはどのように起こっていますか?どこで間違っていますか?

  2. どうすれば問題を解決できますか?つまり、最初に空のパーティションが既にあるので、それを最初に取り除く方法です。

ファイル(空の場合は機能していました)とファイルグループを削除しようとしましたが、ファイルグループは削除できないと述べました。

誰かがこれがどのように起こったのか、そしてパーティション2のエントリを取り除く方法を説明してくれませんか?


3
スティーブ、パーティション構成と機能を投稿できますか?
PseudoToad 2015

@steve-Gizmoが要求したとおりに、そのパーティション構成と機能を投稿するのに本当に役立ちます。
Thronk、2015年

1
sys.partitionsのpartition_idも公開できますか?
user_0 2015年

回答:


3

結果は、ある時点で、パーティション構成NEXT USEDファイルグループがDailyAlbertFG30に設定されたときに、明示的なNULLパーティション境界が関数に追加されたことを示しています。また、DailyAlbertFG2が使用されていないようです。おそらく、その後マージされたファイルグループにパーティションがあった可能性があります。

以下は、NULL境界を持つFG30パーティションを作成する方法を示すスクリプトです。NULL境界が誤って追加された可能性があります。

CREATE PARTITION FUNCTION DailyAlbertPF1 (datetime2(3)) AS RANGE RIGHT FOR VALUES();
GO
CREATE PARTITION SCHEME DailyAlbertPS1 AS PARTITION DailyAlbertPF1 ALL TO ([DailyAlbertFG1]);
GO
CREATE TABLE dbo.FactAgentAlbertPortalSessionEntries
    (
      DateTimeColumn datetime2(3)
    )
ON  DailyAlbertPS1(DateTimeColumn);
GO

DECLARE @FileGroupNumber int = 1;
DECLARE @DateTimeBoundary datetime2(3) = '2015-04-15T00:00:00.000';
DECLARE @SQL nvarchar(MAX);
WHILE @DateTimeBoundary <= '2015-05-14T00:00:00.000'
BEGIN
    SET @SQL = N'ALTER PARTITION SCHEME DailyAlbertPS1 NEXT USED DailyAlbertFG' + CAST(@FileGroupNumber AS nvarchar(5)) + N';';
    EXEC(@SQL);
    ALTER PARTITION FUNCTION DailyAlbertPF1() SPLIT RANGE(@DateTimeBoundary);
    SET @DateTimeBoundary = DATEADD(day, 1, @DateTimeBoundary);
    SET @FileGroupNumber += 1;
END;
--add NULL boundary on DailyAlbertFG30
SET @DateTimeBoundary = NULL;
ALTER PARTITION SCHEME DailyAlbertPS1 NEXT USED DailyAlbertFG30;
ALTER PARTITION FUNCTION DailyAlbertPF1() SPLIT RANGE(@DateTimeBoundary);
GO

0
  1. 知りません。これ自体は珍しいケースではありません。パーティションはファイルグループに自由に割り当てることができます。1:1である必要はありません。誤って間違ったFGに再構築したか、短期間の構成が不適切だった可能性があります。この不規則性は心配する必要はありませんが、もちろん、クリーンアップできます。
  2. 空のパーティションの1つを他のパーティションにマージすることで、それらを取り除くことができます。これを行う方法については、Webに優れたガイドがあります。この場合、これは簡単で瞬時に実行できます。パーティションを再構築して、目的のFGにパーティションを移動することもできます。空のパーティションの再構築は瞬時に行われます。

クリーンアップが完了して空のFGが見つかったら、それらもドロップできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.