2023年6月21日发(作者:)

遭遇:“传⼊的表格格式数据流(TDS)远程过程调⽤(RPC)协议流不正确”错误正在写⼀个类似⽂章的发表系统。其中记录⽂章内容的字段Contents设计为varchar(Max)类型。其中在DAL层调⽤存储过程来插⼊数据的参数 SqlParameter[] parameters = { new SqlParameter("@Contents", r)                ……                }当⼀次我插⼊⼤概7000字左右的⽂章时,提⽰如下错误: [eption] = {"传⼊的表格格式数据流(TDS)远程过程调⽤(RPC)协议流不正确。参数 8 (""@Contents""):数据类型 0xA7 的数据长度或元数据长度⽆效。"}看到这个错误,我就郁闷了,我已经把1万字的⽂章保存成功了,可这次才7000左右,怎么会失败?⼏经测试发现了⼀个现象: 插⼊⼩于4000个汉字,或汉字⼤于8000的时候,没有问题。但当汉字字符数量在4000~8000之间的时候,

在⽹上转悠了⼏圈。终于解决了这个问题。修改如下:

SqlParameter[] parameters = { new SqlParameter("@Contents", r)                ……                }修改为:

SqlParameter[] parameters = { new SqlParameter("@Contents", r,-1)                ……                }也就是,当类型为text、VarChar(Max)时其对应的size值为-1就可以了。回过头来再想想,为什么,没有设置-1时,录⼊⼤于8000字的时候,却不报错?难道当⽂字在7000时,超过了Varchar所能存储的4000汉字的最⼤上限⽽报错?⽽当⽂字超过8000时,⽆论是字符,还是汉字其数量都已经超过了VcharChar(8000)最⼤限制,此时系统⾃动转成text或VarChar(Max)类型了??请⾼⼿指点!

2023年6月21日发(作者:)

遭遇:“传⼊的表格格式数据流(TDS)远程过程调⽤(RPC)协议流不正确”错误正在写⼀个类似⽂章的发表系统。其中记录⽂章内容的字段Contents设计为varchar(Max)类型。其中在DAL层调⽤存储过程来插⼊数据的参数 SqlParameter[] parameters = { new SqlParameter("@Contents", r)                ……                }当⼀次我插⼊⼤概7000字左右的⽂章时,提⽰如下错误: [eption] = {"传⼊的表格格式数据流(TDS)远程过程调⽤(RPC)协议流不正确。参数 8 (""@Contents""):数据类型 0xA7 的数据长度或元数据长度⽆效。"}看到这个错误,我就郁闷了,我已经把1万字的⽂章保存成功了,可这次才7000左右,怎么会失败?⼏经测试发现了⼀个现象: 插⼊⼩于4000个汉字,或汉字⼤于8000的时候,没有问题。但当汉字字符数量在4000~8000之间的时候,

在⽹上转悠了⼏圈。终于解决了这个问题。修改如下:

SqlParameter[] parameters = { new SqlParameter("@Contents", r)                ……                }修改为:

SqlParameter[] parameters = { new SqlParameter("@Contents", r,-1)                ……                }也就是,当类型为text、VarChar(Max)时其对应的size值为-1就可以了。回过头来再想想,为什么,没有设置-1时,录⼊⼤于8000字的时候,却不报错?难道当⽂字在7000时,超过了Varchar所能存储的4000汉字的最⼤上限⽽报错?⽽当⽂字超过8000时,⽆论是字符,还是汉字其数量都已经超过了VcharChar(8000)最⼤限制,此时系统⾃动转成text或VarChar(Max)类型了??请⾼⼿指点!