DDL в вашем вопросе - это синтаксис для хранилища данных SQL / хранилища параллельных данных SQL, а не для базы данных SQL Azure (или SQL Server на виртуальной машине Azure или локально). Нельзя использовать встроенный синтаксис для последнего, плюс условие DISTIBUTION
в этих случаях неприменимо.
Вместо этого сначала создайте функцию и схему разбиения и укажите предложение ON
со схемой разбиения. Индекс может быть указан с использованием встроенного синтаксиса, как в примере ниже, или отдельно с использованием CREATE CLUSTERED COLUMNSTORE INDEX...
.
CREATE PARTITION FUNCTION PF_FactInternetSales_OrderDateKey(int)
AS RANGE RIGHT FOR VALUES(
20000101
, 20010101
, 20020101
, 20030101
, 20040101
, 20050101
);
CREATE PARTITION SCHEME PS_FactInternetSales_OrderDateKey
AS PARTITION PF_FactInternetSales_OrderDateKey
ALL TO ([PRIMARY]);
CREATE TABLE [dbo].[FactInternetSales]
(
[ProductKey] int NOT NULL
, [OrderDateKey] int NOT NULL
, [CustomerKey] int NOT NULL
, [PromotionKey] int NOT NULL
, [SalesOrderNumber] nvarchar(20) NOT NULL
, [OrderQuantity] smallint NOT NULL
, [UnitPrice] money NOT NULL
, [SalesAmount] money NOT NULL
, INDEX ccix CLUSTERED COLUMNSTORE ON PS_FactInternetSales_OrderDateKey(OrderDateKey)
) ON PS_FactInternetSales_OrderDateKey(OrderDateKey);
Обратите внимание, что для использования columnstore в базе данных SQL Azure необходим минимум Standard Edition и S3 Service Objective. Запрос ниже вернет вашу текущую конфигурацию.
SELECT
DATABASEPROPERTYEX(N'YourDatabase', 'Edition') AS Edition
, DATABASEPROPERTYEX(N'YourDatabase', 'ServiceObjective') AS ServiceObjective;
При необходимости вы переходите на более высокий уровень с помощью портала или в T-SQL с DDL ниже. Это может занять несколько минут, и вы можете запустить приведенный выше запрос, чтобы убедиться, что он выполнен.
ALTER DATABASE YourDatabase
MODIFY (SERVICE_OBJECTIVE = 'S3');
Я вижу, вы также пометили свой вопрос SQL Server 2012. Кластерные индексы columnstore были введены в SQL Server 2014 Enterprise Edition и, начиная с SQL Server 2016 с пакетом обновления 2 (SP2), могут использоваться и в других выпусках SQL Server. В SQL Server 2012 поддерживаются только некластеризованные индексы хранилища столбцов только для чтения.