当前位置: 代码迷 >> Sql Server >> sqlserver 2008R2,在反复操作 添加列,更新数据,删除列 N次之后报错
  详细解决方案

sqlserver 2008R2,在反复操作 添加列,更新数据,删除列 N次之后报错

热度:177   发布时间:2016-04-24 09:14:10.0
sqlserver 2008R2,在反复操作 添加列,更新数据,删除列 N次以后报错


SQL SERVER2008 R2一个数据表test121含一个nvarchar(2000)的xx字段,数个nvarchar(N)N<=200
然后由于业务需要,需在表上添加一个新列yy,将xx转存到yy,然后将xx全部经过加密处理并更新
如果xx处理失败,使用yy列数据进行回滚,如果成功,则将yy列删除

现经过测试发现,sqlserver 2008,在反复操作 添加列,更新数据,删除列 N次以后,
即使数据中间不经任何操作,
sqlserver都会报错:不能创建大小为8071的行,该大小大于所允许的最大行大小8060

求大神解释一下,这是何故?
------解决思路----------------------
说明SQL Server 不是以定义的总长而是存储总长判断是非超8060的。
加字段是需要增加存储数据长度信息的空间的,所以不更新也会报错。
更新记录就会回收记录上的作废空间。
DBCC 应该不会在事务中直接起作用的,总要等解锁了才能回收吧。
  相关解决方案