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 应该不会在事务中直接起作用的,总要等解锁了才能回收吧。