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

Откуда:
Сообщений: 757
Коллеги приветствую!

Возможно ли создать кластерный секционированный колумнстор из кучи, созданной через select into?

Пытаюсь сделать так:
SELECT TOP (0) *
INTO [dbo].[complex_koef]
FROM data_all.dbo.[complex_koef];

CREATE CLUSTERED COLUMNSTORE INDEX [cci_complex_koef] ON dbo.[complex_koef] ON sch_region_data ([region]);


Оно мне говорит:
The statement failed because a columnstore index must be partition-aligned with the base table. Create the columnstore index using the same partition function and same (or equivalent) partition scheme as the base table. If the base table is not partitioned, create a nonpartitioned columnstore index.

А как быть то?
SELECT TOP (0) *
INTO [dbo].[complex_koef] ON sch_region_data ([region])
FROM data_all.dbo.[complex_koef];

Оно не понимает, говорит:
Partition function 'fn_region_data' uses 1 columns which does not match with the number of partition columns used to partition the table or index.

Если я добавляю кластерный партиционированный индекс, то оно потом не дает создать кластерный партиционированный колумнстор, мотивируя это тем, что:
Cannot recreate index 'PK_complex_koef'. The new index definition does not match the constraint being enforced by the existing index.

Чего делать то?
19 авг 19, 18:29    [21952772]     Ответить | Цитировать Сообщить модератору
 Re: Тупой вопрос про секционированный колумнстор  [new]
uaggster
Member

Откуда:
Сообщений: 757
Забыл!
Microsoft SQL Server 2016 (SP2-CU7-GDR) (KB4505222) - 13.0.5366.0 (X64) Jun 15 2019 08:22:25 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows Server 2012 R2 Standard 6.3 <X64> (Build 9600: ) (Hypervisor)
19 авг 19, 18:31    [21952775]     Ответить | Цитировать Сообщить модератору
 Re: Тупой вопрос про секционированный колумнстор  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36686
Сначала секционировать кучу придется. Или переливать в уже заранее созданную секционированную таблицу.

Сообщение было отредактировано: 19 авг 19, 18:45
19 авг 19, 18:45    [21952786]     Ответить | Цитировать Сообщить модератору
 Re: Тупой вопрос про секционированный колумнстор  [new]
invm
Member

Откуда: Москва
Сообщений: 9114
uaggster
Чего делать то?
Например, можно так
use tempdb;
go

create partition function pfnTest(int)
as
range for values (1, 2);
go

create partition scheme psTest
as
partition pfnTest
all to ([primary]);
go

select top (0)
 *
into dbo.t
from
 sys.objects;

create clustered index CIX_t on dbo.t (object_id) on psTest(object_id); 
create clustered columnstore index CIX_t on dbo.t with (drop_existing = on) on psTest(object_id);
go

drop table dbo.t;
drop partition scheme psTest;
drop partition function pfnTest;
go
19 авг 19, 19:04    [21952797]     Ответить | Цитировать Сообщить модератору
 Re: Тупой вопрос про секционированный колумнстор  [new]
uaggster
Member

Откуда:
Сообщений: 757
invm, Я, конечно, попробую запустить тест, но я так уже делал.
Оно ругается:
Cannot recreate index 'PK_complex_koef'. The new index definition does not match the constraint being enforced by the existing index.
19 авг 19, 19:39    [21952832]     Ответить | Цитировать Сообщить модератору
 Re: Тупой вопрос про секционированный колумнстор  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36686
uaggster
invm, Я, конечно, попробую запустить тест, но я так уже делал.
Оно ругается:
Cannot recreate index 'PK_complex_koef'. The new index definition does not match the constraint being enforced by the existing index.

А не наде делать PK. Надо сделать обычный кластерный индекс, тогда все работает:

К сообщению приложен файл. Размер - 45Kb


Сообщение было отредактировано: 19 авг 19, 19:44
19 авг 19, 19:44    [21952836]     Ответить | Цитировать Сообщить модератору
 Re: Тупой вопрос про секционированный колумнстор  [new]
uaggster
Member

Откуда:
Сообщений: 757
Стоп. Я кажется понял, в чем проблема.
Я создавал партиционированный кластерный индекс как:
Alter table dbo.complex_koef Add constraint PK_complex_koef primary key clustered (id, region) on sch_region_data ([region]);

Но ведь create clustered index - это же просто альтернативный синтаксис?
Или я в другом месте перемудрил.
19 авг 19, 19:47    [21952839]     Ответить | Цитировать Сообщить модератору
 Re: Тупой вопрос про секционированный колумнстор  [new]
uaggster
Member

Откуда:
Сообщений: 757
Гавриленко Сергей Алексеевич, все, понял, спасибо!
19 авг 19, 19:48    [21952840]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить