Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server Visual Studio 2017中的SSDT和ColumnStore索引_Sql Server_Visual Studio_Ssms_Sql Server Data Tools_Columnstore - Fatal编程技术网

Sql server Visual Studio 2017中的SSDT和ColumnStore索引

Sql server Visual Studio 2017中的SSDT和ColumnStore索引,sql-server,visual-studio,ssms,sql-server-data-tools,columnstore,Sql Server,Visual Studio,Ssms,Sql Server Data Tools,Columnstore,在SSDT中,我有一个表和列存储索引,定义如下: CREATE TABLE [dbo].[FactBillPayTransaction] ( [NaturalKeyText] NVARCHAR (500) NOT NULL, [RecordEffectiveDateTime] DATETIME2 (7) NOT NULL, [SourceEffectiveUTCDateTime] DATE

在SSDT中,我有一个表和列存储索引,定义如下:

CREATE TABLE [dbo].[FactBillPayTransaction] (
    [NaturalKeyText]                     NVARCHAR (500)  NOT NULL,
    [RecordEffectiveDateTime]            DATETIME2 (7)   NOT NULL,
    [SourceEffectiveUTCDateTime]         DATETIME2 (7)   NOT NULL,
    [InsertJobRunSequenceNumber]         BIGINT          NOT NULL,
    [LatestUpdateJobRunSequenceNumber]   BIGINT          NOT NULL,
    [InsertDateTime]                     DATETIME2 (7)   NOT NULL,
    [LatestUpdateDateTime]               DATETIME2 (7)   NOT NULL,
    [DeleteDateTime]                     DATETIME2 (7)   NULL,
    [ChangeControlChecksum]              NVARCHAR (32)   NOT NULL,
    .......More Columns
);
GO
CREATE CLUSTERED COLUMNSTORE INDEX [ci_cs_FactBillPayTransaction]
    ON [dbo].[FactBillPayTransaction];

When I generate scripts i get the following for SQL Server 2014:

CREATE TABLE [dbo].[FactBillPayTransaction] (
    [NaturalKeyText]                     NVARCHAR (500)  NOT NULL,
    [RecordEffectiveDateTime]            DATETIME2 (7)   NOT NULL,
    [SourceEffectiveUTCDateTime]         DATETIME2 (7)   NOT NULL,
    [InsertJobRunSequenceNumber]         BIGINT          NOT NULL,
    [LatestUpdateJobRunSequenceNumber]   BIGINT          NOT NULL,
    [InsertDateTime]                     DATETIME2 (7)   NOT NULL,
    [LatestUpdateDateTime]               DATETIME2 (7)   NOT NULL,
    [DeleteDateTime]                     DATETIME2 (7)   NULL,
    [ChangeControlChecksum]              NVARCHAR (32)   NOT NULL,
    .......More Columns   
);

CREATE CLUSTERED INDEX [ci_cs_FactBillPayTransaction]
    ON [dbo].[FactBillPayTransaction]([NaturalKeyText]);

CREATE CLUSTERED COLUMNSTORE INDEX [ci_cs_FactBillPayTransaction]
    ON [dbo].[FactBillPayTransaction] WITH (DROP_EXISTING = ON);

“两个创建索引”命令似乎不正确,而且,为什么它引用了一列?

这一定是产品缺陷,但最终结果仍然是正确的

每个行存储索引必须至少引用一列,这就是为什么在生成的第一个CREATE CLUSTERED index语句中引用一列

生成CREATE CLUSTERED INDEX的最可能解释是:数据必须与分区对齐,因此,首先需要在分区方案上创建聚集索引,将每一行分配给它的分区,然后需要使用DROP_EXISTING=TRUE子句创建具有相同分区方案的聚集列存储索引。因此,如果您有一个分区表,那么语法如下所示:

CREATE CLUSTERED INDEX [ci_cs_FactBillPayTransaction]
    ON [dbo].[FactBillPayTransaction]([NaturalKeyText])
    ON COLUMNSTORE_PARTITION_SCHEME (NaturalKeyText);

CREATE CLUSTERED COLUMNSTORE INDEX [ci_cs_FactBillPayTransaction]
    ON [dbo].[FactBillPayTransaction] WITH (DROP_EXISTING = ON)
    ON COLUMNSTORE_PARTITION_SCHEME (NaturalKeyText);

别客气。这不是问题。我的本地数据库版本不支持此操作。目标做到了。该语句实际上是创建一个约束,然后删除并再次创建它