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

时间:2011-10-03 06:05:01

标签: sql-server sql-server-2008 entity-framework

我在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()时,出现错误:

  

无法创建大小为8061的行,该行大于允许的最大行大小8060

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

理查德

1 个答案:

答案 0 :(得分:17)

我能看到你在这个表定义中遇到这个错误的唯一方法就是你之前有一个大的固定宽度列,后来被删除了。

CREATE TABLE [dbo].[Attachments] (
    [Id] int IDENTITY(1,1) NOT NULL,
    [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)

哪个给出

  

消息511,级别16,状态1,行12无法创建大小为8075的行   这大于允许的最大行大小8060。

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

ALTER TABLE [dbo].[Attachments] REBUILD