2

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

Есть ли простой способ сбросить диапазон диапазона или конкретный номер раздела (или даже весь диапазон, например '01 -01-2014 'до '01 -01-2015'). ОКТЯБРЬ, TRUNCATE TABLE WITH(PARTITION(x,y to z)).

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

TRUNCATE TABLE TableNameb ; 
GO 

10X

ответ

2

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

С (ПОДСИСТЕМАМ ({|} [, ... п]))

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

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

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

Example TABLE SWITCH

+0

что полная команда для spasific раздела (номер) или диапазон.Если вы можете отправить мне ссылку. –

+0

@itzikPaz Извините, не понимаю, что у вас есть. Все ссылки уже в моем ответе – lad2025

+0

@itzikPaz Просто создайте вторую таблицу в той же файловой группе и структуре, что и секционированная таблица, SWITCH TABLE и обрезать новую таблицу. Вот и все. – lad2025

0

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

+0

Извините, но это не решение, которое я хотел бы получить (речь идет о 1,5-2,5 T строк) :(. –