今天上班,用户提交了一个"将截断字符串或二进制数据"的问题。
这种问题,依照多年的经验,一看就是数据库字段长度不够了。现在就是需要确定具体的表和字段就好了
由于用户的数据库是SQLSERVER。这在SQLSERVER上还是比较好监控的
给大家展示一下我具体的操作步骤
连上数据库
首先要先链接上,业务系统对应的数据库,用SQLSERVER Management Studio就可以。
监控SQL
在菜单栏,找到工具,然后打开SQL Server Profiler
链接后,采用默认属性即可。
这么多年,没有搞懂各种模板的区别,一般采用默认的就可以。
抓异常SQL
让用户重新执行以下报错的地方,这个时候,还没有进行任何操作,肯定依然会报错。
等待用户报错完成后,点击上面的暂停按钮,停止SQL监控。
分析问题
在用户点击报错的时候,其实我们已经知道具体错误的具体的业务模块,这个时候其实表也已经知道了。在这个界面搜索具体的表名称。然后把对应的insert,update语句抓出来,有可能只有insert或者update,根据具体的业务来确定。
我的是一个insert语句,SQL已经脱敏处理,大概就是类似这样的SQL,在SQL的上下都添加上事务和事务回滚。
begin tran
insert into a(col1,col2,col3) values('col1','col2','col3');
rollback tran
这样就可以在数据库执行,在数据库看到具体的错误信息了
现在没有更好的办法,只能根据感觉或者看那个数据长度特别长,确认那个字段出现问题了。
解决问题
确认了具体的表、字段后,就可以着手解决问题了。
其实解决问题,就是增加字段长度就可以了。
很多时候,大家都是通过SQLSERVER上找到对应的表,右键,通过设计修改字段长度的。
但是由于数据量等各种原因,那样处理有的时候太慢了。
可以通过下面的SQL直接修改字段长度。方便快捷。
Alter table table_a
Alter column col1 nvarchar(500);
注意
任何动数据库的操作都是存在风险的,所以修改前对数据进行必要的备份是一个非常好的习惯。
本文暂时没有评论,来添加一个吧(●'◡'●)