首页 > 解决方案 > 如何创建列超过 1024 列的表类型

问题描述

我想创建一个应该有超过 1024 列的表类型。所以我尝试通过创建一个-SpecialPurposeColumns XML COLUMN_SET 来使用稀疏列,如下所示。那没有用。它给了我一个错误:'COLUMN_SET'附近的语法不正确

CREATE TYPE dbo.TempTable AS TABLE (
        ID INT IDENTITY(1,1),
        SpecialPurposeColumns XML COLUMN_SET FOR ALL_SPARSE_COLUMNS,
        col1 VARCHAR(10) SPARSE NULL,
        col2 VARCHAR(10) SPARSE NULL,
        .
        .
        col1025 VARCHAR(10) SPARSE NULL);

有什么方法可以创建一个可以有超过 1024 列的表类型?

标签: sqlsql-serveruser-defined-types

解决方案


使用稀疏列的限制

使用稀疏列的限制

稀疏列可以是任何 SQL Server 数据类型,其行为与任何其他列一样,但具有以下限制:

  • ...
  • 稀疏列不能是用户定义的表类型的一部分,用户定义的表类型用于表变量和表值参数。

因此,您不能SPARSE在表类型对象中使用列。

至于拥有超过 1,024 列,同样,不,你不能。来自SQL Server 的最大容量规格

数据库引擎对象

在 SQL Server 数据库中定义或在 Transact-SQL 语句中引用的各种对象的最大大小和数量。

SQL Server 数据库引擎对象 最大大小/数量 SQL Server(64 位) 附加信息
每个表的列 1,024 包含稀疏列集的表最多包含 30,000 列。请参阅稀疏列集

显然,“查看稀疏列集”在这里不相关,因为它们不受支持(如上所述)。

但是,如果您“需要”这么多列,那么您很可能确实存在设计缺陷;可能遭受严重的非规范化。


推荐阅读