案例分享:前端软件使用正常,后台日志文件经常报错‘字符串或二进制数据将在表T_BAS_PLUGINL,列XXX中被截断’

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

案例分享:前端软件使用正常,后台日志文件经常报错‘字符串或二进制数据将在表T_BAS_PLUGINL,列XXX中被截断’

问题描述

前端软件使用正常,后台日志文件经常报错:

字符串或二进制数据将在表“ProdLog.dbo.T_BAS_PLUGINLOG”,列“FOBJECTTYPEID”中被截断;

如下图所示。

image.webp

分析处理过程

1、查询云星空数据字典,没有找到这个表T_BAS_PLUGINLOG;

2、仔细看日志,发现是日志库‘ProdLog’;

3、在测试环境上查看日志库里面的这个表“T_BAS_PLUGINLOG”的列“FOBJECTTYPEID”;

执行sp_help T_BAS_PLUGINLOG

长度显示是100字节,如下图所示;

image.webp

直接在SQL里面展开表,看字段的话,显示的是50字符;如下图所示;

image.webp

4、查看报错日志里面提示的值的原内容是

“101010200000000000035056E5B15F388FB(业务类型_0102(半成品))”;

截断值:

“101010200000000000035056E5B15F388FB(业务类型_0102(半成品)”

也就是被截断了一个“)”;

直接看这个内容是确实超过了50字符的;

说明:

在Unicode编码中,无论是英文还是中文,每个字符都占用两个字节。

5、处理这报错的话,可以由业务前端控制这个字段的值不要超过50字符;

如果实际就是需要超过的话,那就后台修改这个字段的长度即可,比如改为200字节。可执行如下语句;

alter table T_BAS_PLUGINLOG  

alter column FOBJECTTYPEID nvarchar(200)


扩展知识

1、nchar 和 nvarchar (Transact-SQL)

2、sp_help (Transact-SQL)

案例分享:前端软件使用正常,后台日志文件经常报错‘字符串或二进制数据将在表T_BAS_PLUGINL,列XXX中被截断’

问题描述前端软件使用正常,后台日志文件经常报错:字符串或二进制数据将在表“ProdLog.dbo.T_BAS_PLUGINLOG”,列“FOBJECTTYPEID”中被截...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息