Есть ли способ удалить значение диапазона из таблицы разделов (SQL Server 2012)

У меня есть стол PARTITION "TableA". Я создал раздел с именем столбца "RecorDate" (тип DATE). За последние 6 месяцев есть записи о том, что я не заинтересован в их сохранении, и я хочу их удалить.

Есть ли простой способ отбросить диапазон vale ИЛИ определенный номер раздела (или даже весь диапазон, например, от "01-01-2014" до "01-01-2015").

что-то вроде в ORACLE, TRUNCATE TABLE WITH(PARTITION(x,y to z)),

Кстати, я знаю команду переключения раздела, чтобы переместить диапазон в другую таблицу и затем выполнить команду

TRUNCATE TABLE TableNameb ;
GO

10X

2 ответа

Решение

TRUNCATE WITH PARTITION будет доступен с SQL Server 2016

WITH (PARTITIONS ({|} [,... n]))

Applies to: SQL Server (SQL Server 2016 Community Technology Preview 2 (CTP2) through current version).

Specifies the partitions to truncate or from which all rows are removed. If the table is not partitioned, the WITH PARTITIONS argument

сгенерирует ошибку. Если предложение WITH PARTITIONS не указано, вся таблица будет усечена.

<partition_number_expression> can be specified in the following ways:

    Provide the number of a partition, for example: WITH (PARTITIONS (2))

    Provide the partition numbers for several individual partitions separated by commas, for example: WITH (PARTITIONS (1, 5))

    Provide both ranges and individual partitions, for example: WITH (PARTITIONS (2, 4, 6 TO 8))

    <range> can be specified as partition numbers separated by the word TO, for example: WITH (PARTITIONS (6 TO 8))

Пример:

TRUNCATE TABLE dbo.PartitionedTable WITH (PARTITIONS (2, 4, 6 TO 8))

SQL Server до 2016 года

Сегодня вы можете использовать это:

Как вы заметили, сегодня есть способ сделать это, переместив раздел во вторую таблицу с помощью ALTER TABLE SWITCH, а затем TRUNCATE для второй таблицы. Если обе таблицы являются частью одной и той же файловой группы, это должна быть операция с низким уровнем риска, поскольку данные не перемещаются, мы просто обновляем метаданные.

Пример TABLE SWITCH

Я бы сказал, удалить * из table_name. удалить все из таблицы. Вы можете использовать инструкцию where после удаления, чтобы быть более точным. чтобы настроить команду самостоятельно, смотрите здесь http://www.w3schools.com/sql/sql_between.asp

Другие вопросы по тегам