Секционированные таблицы и индексы SQL Server 2005 Страница 29. Управление второй каскадной таблицей (\"выключаемой\")
|
Страница 29 из 33 Управление второй каскадной таблицей ("выключаемой") - Создайте вторую каскадную таблицу - это пустая таблица, которая будет хранить данные отключаемой секции.
CREATE TABLE SalesDB.[dbo].[OrdersOctober2002] ( [OrderID] [int] NOT NULL, [EmployeeID] [int] NULL, [VendorID] [int] NULL, [TaxAmt] [money] NULL, [Freight] [money] NULL, [SubTotal] [money] NULL, [Status] [tinyint] NOT NULL, [RevisionNumber] [tinyint] NULL, [ModifiedDate] [datetime] NULL, [ShipMethodID] [tinyint] NULL, [ShipDate] [datetime] NOT NULL, [OrderDate] [datetime] NOT NULL, [TotalDue] [money] NULL ) ON [FG1] GO
| - Проиндексируйте каскадную таблицу - она должна иметь такой же кластерный индекс, как и таблица, в которую планируется добавить секцию (секция станет этой таблицей).
ALTER TABLE [OrdersOctober2002] ADD CONSTRAINT OrdersOctober2002PK PRIMARY KEY CLUSTERED (OrderDate, OrderID) ON [FG1] GO
|
Исключите старые данные из секционированной таблицы и добавьте новые. - Отделите старые данные от основной таблицы - переключите их во вторую каскадную таблицу.
ALTER TABLE Orders SWITCH PARTITION 1 TO OrdersOctober2002 GO
| - Измените функцию секционирования для того, чтобы удалить граничную точку октября 2002.
ALTER PARTITION FUNCTION TwoYearDateRangePFN() MERGE RANGE ('20021031 23:59:59.997') GO
| - Следующий оператор удаляет ассоциацию между файловой группой и схемой секционирования. Другими словами, FG1 больше не является частью схемы секционирования. А поскольку вы будете размещать новые данные всё в тех же 24 секциях, то вам придется сделать FG1 "next used" секцией. Иначе говоря, это будет следующая используемая секция.
ALTER PARTITION SCHEME TwoYearDateRangePScheme NEXT USED [FG1] GO
| - Измените функцию секционирования для того, чтобы добавить новую граничную точку октября 2004.
ALTER PARTITION FUNCTION TwoYearDateRangePFN() SPLIT RANGE ('20041031 23:59:59.997') GO
| - Измените ограничение целостности базовой таблицы (если такое существует) для того, чтобы расширить диапазон данных. Поскольку добавление ограничения целостности может стать дорогостоящей операцией (из-за проверки данных), то в данном случае наилучшее решение - это растянуть диапазон дат вместо удаления и пересоздания ограничения целостности. Пока у нас есть только одно ограничение целостности (OrdersRangeYearCK), но на будущее мы создадим два.
ALTER TABLE Orders ADD CONSTRAINT OrdersRangeMaxOctober2004 CHECK ([OrderDate] < '20041101') GO ALTER TABLE Orders ADD CONSTRAINT OrdersRangeMinNovember2002 CHECK ([OrderDate] >= '20021101') GO ALTER TABLE Orders DROP CONSTRAINT OrdersRangeYearCK GO
| - "Включите" новые данные из первой каскадной таблицы.
ALTER TABLE OrdersOctober2004 SWITCH TO Orders PARTITION 24 GO
|
|