由于代码测试不佳(不是我的!),我最终得到了一个包含 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)