首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我的行大小超过了8060字节的允许最大值?

为什么我的行大小超过了8060字节的允许最大值?
EN

Stack Overflow用户
提问于 2017-08-15 13:46:28
回答 1查看 1.6K关注 0票数 1

SQL Server 2012,Web中有下表:

代码语言:javascript
运行
复制
CREATE TABLE [dbo].[MyTable] 
(
     [Id]               INT            IDENTITY (1, 1) NOT NULL,
     [Created]          DATETIME       DEFAULT (getdate()) NOT NULL,
     [RefId]            INT            NULL,
     [Name]             NVARCHAR (128) NULL,
     [Email]            NVARCHAR (128) NULL,
     [ImageUrl]         NVARCHAR (256) NULL,
     [Url]              VARCHAR (256)  NULL,
     [Age]              TINYINT        NULL,
     [Country]          VARCHAR (6)    NULL,
     [Location]         NVARCHAR (192) NULL,
     [People]           INT            NULL,
     [Categories]       NVARCHAR (128) NULL,
     [Block]            BIT            DEFAULT ((0)) NOT NULL,
     [GeneratedRevenue] INT            NULL,
     [IsFemale]         BIT            DEFAULT ((1)) NULL,
     [HasInstalled]     BIT            NULL,
     [Keywords]         VARCHAR (128)  NULL,
     [Brands]           NVARCHAR (512) NULL,
     [Source]           TINYINT        NULL,
     [Alias]            VARCHAR (65)   NULL,

     PRIMARY KEY CLUSTERED ([Id] ASC)
);

据我所知,总大小应该是3175字节;但在更新表时,经常会得到以下错误:

无法创建大于允许的最大行大小8060的8068行。

上述结果如何导致一行大小为8068?

编辑:我应该指出,这个表已经被修改了,使用了更改跟踪,并且有四个索引。

此外,如果我将内容复制到具有相同定义的新表中,则暂时不会出现错误,但请返回。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-15 14:40:48

你说你使用变更跟踪。您是否忽略了更改跟踪的版本控制部分,并通过执行以下操作重置条目?

代码语言:javascript
运行
复制
ALTER TABLE dbo.MyTable disable change_tracking
ALTER TABLE dbo.MyTable enable change_tracking

如果是这样的话,你可能有个嫌疑犯。每次重新启用更改跟踪时,更改跟踪都会在幕后添加一个8位列,如果更改跟踪已经存在,则删除该列。因为删除列只是一种元操作,因此可能会有大量掉落的8位列隐藏在幕后,这取决于重新启用更改跟踪的频率。

要检查这一点,请查看system_internals_partition_columns视图,并查看是否有大量的is_dropped列。可能有更多的原因有很多,但是这种使用变更跟踪的方式就是其中之一。

我看到Rusanu在评论(rusanu.com/2011/10/20/sql-server-table-columns-under-the-hoo‌​d)中链接到一篇很好的文章:他列出的查询应该是您需要查看的内容,如果是这样的话。

编辑:如果需要删除已删除的列,则可以为有许多已删除列的表重新生成聚集索引。这意味着重新构建MyTable的聚集索引将减轻您的症状。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45694198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档