Sql 如何忽略作为columnstore索引一部分的列,这些列由于数据类型问题而无法参与

Sql 如何忽略作为columnstore索引一部分的列,这些列由于数据类型问题而无法参与,sql,sql-server,indexing,sql-server-2012,clustered-index,Sql,Sql Server,Indexing,Sql Server 2012,Clustered Index,我有一个现有的表,其中有100多列。现在,我试图在同一个表上创建聚集的columnstore索引,但由于受到限制,其中一些列不符合数据类型标准,因此这会引发一个错误。是否有办法忽略不符合聚集ColumnStore索引要求的列。多谢各位 SQL for creating CCSI :- CREATE CLUSTERED COLUMNSTORE INDEX CCSI ON [Dbname].[dbo].[testtable] WITH ( DROP_EXISTING = OFF ); E

我有一个现有的表,其中有100多列。现在,我试图在同一个表上创建聚集的columnstore索引,但由于受到限制,其中一些列不符合数据类型标准,因此这会引发一个错误。是否有办法忽略不符合聚集ColumnStore索引要求的列。多谢各位

SQL for creating CCSI :-



CREATE CLUSTERED COLUMNSTORE INDEX CCSI 
ON [Dbname].[dbo].[testtable] 
WITH ( DROP_EXISTING = OFF );

Error :-

The statement failed. Column 'Column1' has a data type that cannot participate in a columnstore index. Omit column 'Column1'.

使用聚集列存储索引时不能忽略列。对于所选列,必须按如下方式选择非聚集列存储索引:

CREATE NONCLUSTERED COLUMNSTORE INDEX CCSI 
ON [Dbname].[dbo].[testtable] (Col1, Col2...required columns)
WITH ( DROP_EXISTING = OFF );

我正在遍历一个表列表,希望将我的解决方案编写为泛型,而不是硬编码列。每个表都有自己的列。您可能需要使用该表的sys.columns来迭代所有列名,并生成该列名,因为无法排除聚集columnstore索引中的列。每当创建columnstore索引时,您不得包含任何具有columnstore索引不支持的数据类型的列-