我正在将大量空表迁移到 SQL Server 2008 中。
这些表是一个大逻辑表的垂直分区。
问题是这个逻辑表有超过 1024 列。
鉴于大多数字段为空,我计划使用稀疏表。
到目前为止,对于我所有的表,我一直在使用 SELECT...INTO,它运行得非常好。
但是,现在我有“创建表失败,因为表 'MyBigTable' 中的列 'xyz' 超过了 1024 列的最大值。”
有什么办法可以做 SELECT...INTO 以便它创建具有稀疏支持的新表?
我正在将大量空表迁移到 SQL Server 2008 中。
这些表是一个大逻辑表的垂直分区。
问题是这个逻辑表有超过 1024 列。
鉴于大多数字段为空,我计划使用稀疏表。
到目前为止,对于我所有的表,我一直在使用 SELECT...INTO,它运行得非常好。
但是,现在我有“创建表失败,因为表 'MyBigTable' 中的列 'xyz' 超过了 1024 列的最大值。”
有什么办法可以做 SELECT...INTO 以便它创建具有稀疏支持的新表?
您可能想要做的是手动创建表并使用INSERT ... SELECT
语句填充它。
要创建表,我建议编写不同的组件表并合并它们的定义,使它们都SPARSE
成为必要的。然后只需运行您的单个CREATE TABLE
语句。
你不能(而且可能无论如何都不想)。有关 MSDN 文档,请参阅INTO 子句 (TSQL)。
问题是稀疏表是物理存储特性而不是逻辑特性,因此 DBMS 引擎无法知道复制该特性。此外,它是一个表范围的属性,并且 SELECT 可以有多个基础源表。请参阅我链接的页面的备注部分,其中讨论了如何仅使用默认组织详细信息。