gpt4 book ai didi

sql - SQL Server 2012 中带有 varchar(max) 字段的最大行大小

转载 作者:行者123 更新时间:2023-12-02 07:54:54 32 4
gpt4 key购买 nike

我创建了一个列类型为nvarchar(max)的表,我的理解是它们可以支持2GB。但是在插入时,我仍然收到此错误:

Cannot create a row of size 8061 which is greater than the allowable maximum row size of 8060.

数据库是否需要全局设置,或者我是否遇到了其他限制?每个表的 varchar(max) 字段数量是否有限制?

最佳答案

SQL Server 使用页来存储数据。页面大小为 8kb。

因此SQL Server中的记录大小(行大小)不能大于8060字节。

如果数据不能容纳在 8060 字节中,则使用引用指针。当 varchar、nvarchar、varbinary、sql_variant 或 CLR 用户定义类型列的组合超过此限制时,SQL Server 数据库引擎SQL Server Database Engine会将宽度最大的记录列移动到 ROW_OVERFLOW_DATA 分配单元中的另一个页,同时保持 原始页面上的 24 字节指针

随着记录根据更新操作而延长,动态地将大记录移动到另一个页面。缩短记录的更新操作可能会导致记录移回 IN_ROW_DATA 分配单元中的原始页。

此外,查询和执行其他选择操作(例如对包含行溢出数据的大型记录进行排序或联接)会减慢处理时间,因为这些记录是同步处理的,而不是异步处理的。

使用稀疏列的表的记录大小限制为 8,018 字节。当转换后的数据加上现有记录数据超过8,018字节时,返回MSSQLSERVER ERROR 576。当列在稀疏类型和非稀疏类型之间转换时,数据库引擎会保留当前记录数据的副本。这会暂时使记录所需的存储空间增加一倍。 。

要获取有关可能包含行溢出数据的表或索引的信息,请使用 sys.dm_db_index_physical_stats 动态管理函数。

关于sql - SQL Server 2012 中带有 varchar(max) 字段的最大行大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19251004/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com