sql - 如何创建列超过 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 列的表类型?
解决方案
从使用稀疏列的限制:
使用稀疏列的限制
稀疏列可以是任何 SQL Server 数据类型,其行为与任何其他列一样,但具有以下限制:
- ...
- 稀疏列不能是用户定义的表类型的一部分,用户定义的表类型用于表变量和表值参数。
因此,您不能SPARSE
在表类型对象中使用列。
至于拥有超过 1,024 列,同样,不,你不能。来自SQL Server 的最大容量规格:
数据库引擎对象
在 SQL Server 数据库中定义或在 Transact-SQL 语句中引用的各种对象的最大大小和数量。
SQL Server 数据库引擎对象 最大大小/数量 SQL Server(64 位) 附加信息 每个表的列 1,024 包含稀疏列集的表最多包含 30,000 列。请参阅稀疏列集。
显然,“查看稀疏列集”在这里不相关,因为它们不受支持(如上所述)。
但是,如果您“需要”这么多列,那么您很可能确实存在设计缺陷;可能遭受严重的非规范化。
推荐阅读
- c# - LogCat android unity app 在闪屏找不到错误之前崩溃
- python - 用列表中的整数替换占位符并使用 openPyxl 格式化 Excel 行
- angular - 如何避免使用 Angular Universal 应用程序闪烁?
- intellij-idea - IntelliJ + AWS Toolkit + Serverless App:“必须能够在项目中找到处理程序才能部署到 Lambda”
- visual-studio - 为什么我删除文件夹时 Visual Studio 2017 挂起?
- events - 可以删除 DB2DETAILDEADLOCK 中的 evt 文件吗?
- swift - URLSession 不运行第二个 GET
- javascript - React Native - 启用 GPS 但仍将禁用返回到我的控制台日志?
- c# - 使用 XYZ 坐标计算物体体积
- visual-studio - 发布所有代码后,在 Chrome 上获取 ERR_UNSAFE_PORT