2010-08-26 68 views
0

我正在将大量空表迁移到SQL Server 2008.T-SQL:SELECT INTO稀疏表?

这些表是一个大逻辑表的垂直分区。

问题是这个逻辑表有1024个以上的列。

鉴于大多数字段为空,我打算使用一个稀疏表。

对于我所有的表,到目前为止我一直在使用SELECT ... INTO,它一直工作得很好。

但是,现在我有“CREATE TABLE失败,因为表'MyBigTable'中的列'xyz'超过了最多1024列”。

有没有什么办法可以做SELECT ... INTO,以便它可以创建具有稀疏支持的新表格?

回答

2

您可能想要做的是手动创建表并使用INSERT ... SELECT语句填充它。

要创建表格,我会推荐脚本编写不同的组件表并合并它们的定义,根据需要将它们全部设置为SPARSE。然后运行你的单一CREATE TABLE声明。

+0

做到了这一点。工作很好。 – tomfanning 2010-08-30 22:57:32

0

你不能(也可能不想)。有关MSDN文档,请参阅INTO Clause (TSQL)

问题是稀疏表是物理存储特性而不是逻辑特性,因此DBMS引擎无法知道要复制该特性。此外,它是一个表范围属性,SELECT可以有多个基础源表。请参阅我链接的页面的“备注”部分,它讨论了如何使用默认组织详细信息。