小编Mou*_*ark的帖子

8Kb 行大小限制被忽略 - 但只是有时!

由于代码测试不佳(不是我的!),我最终得到了一个包含 319 个VARBINARY(MAX)字段、两个DATETIME字段和两个UNIQUEIDENTIFIER字段的表。显然这并不理想,但它应该仍然在 SQL Server 可以处理的行大小的限制内。

据我了解,VARBINARY(MAX)它作为一个 24 字节的指针存储在表上,指向行外存储。24 * 319 = 7656字节,加上其他四个字段= 7704个字节,所以我只是在我可以投入一排的限制。

这一切都很好,直到代码开始将数据插入到这个表中。在与消息崩溃之前它有 6 行:

无法创建大小为 8345 的行,该行大于允许的最大行大小 8060。语句已终止。

这是非常令人费解的,因为任何行都不应该比其他行大(至少在行上)。我已经编写了表格的脚本,它看起来不错。我确实注意到它是用创建的,ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]尽管我不确定会产生什么效果。

有谁知道这里可能会发生什么,更重要的是我如何解决它?

这是用于创建数据库的代码,以及插入命令

CREATE DATABASE MyBigDB;
GO
USE [MyBigDB]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[Autogenerated table with really big data](
    [Primary_key] [uniqueidentifier] NULL,
    [A Foreign key] [uniqueidentifier] NULL,
    [Created] [datetime] NULL,
    [Updated] [datetime] NULL, …
Run Code Online (Sandbox Code Playgroud)

sql-server-2012 varbinary

3
推荐指数
1
解决办法
1717
查看次数

标签 统计

sql-server-2012 ×1

varbinary ×1