sql-server – 实体框架 – 行大小大于允许的最大行大小8060

我有一个实体在sql Server中具有二进制数据类型和相应的varbinary(max)列. EF创建了这个:
CREATE TABLE [dbo].[Attachments] 
(
    [Id] INT IDENTITY(1,1) NOT NULL,[FileName] NVARCHAR(255) NOT NULL,[Attachment] VARBINARY(MAX) NOT NULL
);

当我尝试从Entity Framework调用.SaveChanges()时,我收到一个错误

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

我理解错误,谷歌有很多,但我不明白为什么我得到它.这不应该由Entity Framework / sql Server管理吗?

理查德

解决方法

我可以看到你使用该表定义得到此错误的唯一方法是,如果您之前有一个大的固定宽度列,此后已被删除.
CREATE TABLE [dbo].[Attachments] (
    [Id] int IDENTITY(1,[FileName] nvarchar(255) NOT NULL,[Attachment] varbinary(max) NOT NULL,Filler char(8000),Filler2 char(49)
);

ALTER TABLE  [dbo].[Attachments] DROP COLUMN Filler,Filler2

INSERT INTO [dbo].[Attachments]
([FileName],[Attachment])
VALUES
('Foo',0x010203)

这使

Msg 511,Level 16,State 1,Line 12 Cannot create a row of size 8075
which is greater than the allowable maximum row size of 8060.

如果是这种情况,请尝试重建表

ALTER TABLE [dbo].[Attachments] REBUILD

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...