Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 truncate partition in ms sql 2012  [new]
НиколайСН
Member

Откуда:
Сообщений: 120
Добрый, ребят и девчат!
Лазию по форуму и никак не могу найти хотя бы примеров адекватных.
Понимаю что truncate partition в 2013 не потдерживается а имеется начиная с 2016, НО, ведь как-то же обходят эту проблему? А вот именно как - толкового не пойму, а только слова без примеров.
Так вот, подскажите на примере, плиз, кто может:

CREATE TABLE table1 (
   [CALENDAR_DATE] [datetime] NOT NULL,
   [TEH_OTDEL] [int] NOT NULL,
   [FACT_VALUE_NUMBER] [numeric](19, 4) NULL)


состоит эта таблица допустим из 20ккк строк, и пусть на ней висит индексы все что надо.

CREATE PARTITION FUNCTION [F_CALENDAR_DATE](datetime) AS RANGE LEFT FOR VALUES (N'2016-01-01T00:00:00', N'2017-01-01T00:00:00')

CREATE PARTITION SCHEME [S_CALENDAR_DATE] AS PARTITION [F_CALENDAR_DATE] TO ([_YEAR16], [_YEAR17])

ALTER TABLE table1 ADD  CONSTRAINT [table1_INDEX] PRIMARY KEY CLUSTERED 
(
	[CALENDAR_DATE] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [S_CALENDAR_DATE]([CALENDAR_DATE])

Вроде всё сделали на партиции, ура, и работает и всё супер, НО, вопрос в том, КАК удалить данные за конкретный год?

в 2016 версии это было бы так:
truncate table table1 with (partitions(4))


А какой код будет в 2012 версии?

Почему именно код? я так пойму проще чем читать 100500 форумов, которые и так читаю и не понимаю)
30 янв 19, 14:44    [21797818]     Ответить | Цитировать Сообщить модератору
 Re: truncate partition in ms sql 2012  [new]
aleks222
Member

Откуда:
Сообщений: 852
switch
30 янв 19, 14:45    [21797820]     Ответить | Цитировать Сообщить модератору
 Re: truncate partition in ms sql 2012  [new]
НиколайСН
Member

Откуда:
Сообщений: 120
Забыл, DELETE не надо, ибо повесит задачу часа на 3-5 что отвратительно)
хотелось бы быстрое выполнение
30 янв 19, 14:46    [21797821]     Ответить | Цитировать Сообщить модератору
 Re: truncate partition in ms sql 2012  [new]
НиколайСН
Member

Откуда:
Сообщений: 120
aleks222,

читал про switch, но есть пример выше, специально его написал, а какой код будет? можешь написать?
30 янв 19, 14:47    [21797823]     Ответить | Цитировать Сообщить модератору
 Re: truncate partition in ms sql 2012  [new]
aleks222
Member

Откуда:
Сообщений: 852
НиколайСН
aleks222,

читал про switch, но есть пример выше, специально его написал, а какой код будет? можешь написать?


Извини, дарагой, код я пишу за деньги.
Чти help - тама усе Ё.
30 янв 19, 14:48    [21797825]     Ответить | Цитировать Сообщить модератору
 Re: truncate partition in ms sql 2012  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4379
НиколайСН,



Создай рядом вторую таблицу с аналогичной структурой и прочитай про switch partition . Гуггл-мугл тебе в помощь

https://stackoverflow.com/questions/37239582/switch-partition-in-sql-server
http://blog.pragmaticworks.com/table-partitioning-in-sql-server-partition-switching


https://www.google.com/search?q=switch partition&rlz=1C1GCEB_ruRU832RU832&oq=switch partition&aqs=chrome..69i57j0l5.423j0j8&sourceid=chrome&ie=UTF-8
30 янв 19, 15:51    [21797960]     Ответить | Цитировать Сообщить модератору
 Re: truncate partition in ms sql 2012  [new]
НиколайСН
Member

Откуда:
Сообщений: 120
a_voronin,

спасибо, разобрался наконец-то,

просто на примере было б более понятно, но понял смысл этого switch-а
30 янв 19, 17:34    [21798099]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить