Розбиття SQL Server 2008 R2 - та сама FileGroup, 1 файл, 2 номери_розділу - HELP


10

Це мій перший перехід на розбиття на SQL Server, я дізнався з посібника Brent Ozar, який є фантастичним :)

Кілька разів я натрапив на дивний сценарій; коли я бігаю:

SELECT *
FROM ph.FileGroupDetail
ORDER BY partition_number
Go

Існує та сама група файлів, що показує двічі з двома різними номерами розділів, 1 правильно в кінці зі значенням діапазону, інша на початку з нульовим значенням range_value.

натисніть тут, щоб збільшити зображення

введіть тут опис зображення

Пара питань:

  1. Як це відбувається, де я помилився?

  2. Як вирішити проблему, це означає, як позбутися від неї на початку, оскільки у мене вже є порожній розділ на початку.

Я спробував видалити файл (працював, коли він був порожнім) та файлову групу, але файлова група сказала, що його неможливо видалити.

Чи може хтось пояснити, будь ласка, як це сталося і як позбутися запису розділу 2?


3
Стів, чи можете ви розмістити свою схему та функції розділів?
PseudoToad

@steve - дійсно було б корисно вам опублікувати цю схему розділів та функціонувати так, як просив Gizmo.
Thronk

1
Чи можете ви також відкрити partition_id з sys.partitions?
user_0

Відповіді:


3

Результати вказують, що в певний момент до функції була додана явна межа розділу NULL, коли NEXT USEDдля файлової групи схеми розділів було встановлено DailyAlbertFG30. Крім того, я не бачу використання DailyAlbertFG2. Можливо, колись був розділ на тій групі файлів, який згодом був об’єднаний.

Нижче представлений сценарій, який показує, як можна створити розділ FG30 з межею NULL. Межа 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. Ви можете позбутися однієї з порожніх розділів, об’єднавши одну з них в іншу. В Інтернеті є чудові посібники, як це зробити. У цьому випадку це зробити легко і миттєво. Ви також можете перемістити розділи до потрібного FG, відновивши їх. Перебудова порожніх розділів моментальна.

Коли ви закінчите прибирання та знайдете порожні FG, ви можете також їх скинути.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.