
销售订单 通过 销售订单新变更单变更时 保存报错,提示截断报错,如:
数据保存失败,错误提示:**将截断字符串或二进制数据。语句已终止**
或报错:**String or binary data would be truncated.**

最常见的原因,是销售订单将通版备注字段或者自定义文本字段加长后,没有同步加长新变更单上的字段导致。
可以这样验证下:如果销售订单变更后,不做任何修改,只填变更原因,然后点保存,看看是否会报截断错,如果是,则基本为以上情况,可使用以下脚本进行巡检和修复(注意使用前提):
```sql
/*-------使用前提:-------*/
--1、私有云客户,公有云遇到该报错,建议提单分析处理
--2、SQLSERVER数据库
--对比销售订单表头
DECLARE @NAME01 NVARCHAR(100) ,@NAME02 NVARCHAR(100)
SET @NAME01 = 'T_SAL_ORDER'
SET @NAME02 = 'T_SAL_XORDER'
SELECT
T1.TABLE_NAME 表名,T1.COLUMN_NAME 字段名,T1.DATA_TYPE 字段类型,T1.max_length 字段长度,T1.is_nullable 是否允许NULL值,
'<<-销售订单----·----销售订单变更单->>' '<<-销售订单----·----销售订单变更单->>' ,
T2.TABLE_NAME 表名,T2.COLUMN_NAME 字段名,T2.DATA_TYPE 字段类型,T2.max_length 字段长度,T2.is_nullable 是否允许NULL值,
'ALTER TABLE ' + @NAME02 + ' ALTER COLUMN '+ T1.COLUMN_NAME + ' '+T1.DATA_TYPE+' ('+CONVERT(nvarchar(1000),T1.max_length/2) + ')'+
(CASE WHEN t1.is_nullable = 1 then '' when t1.is_nullable = 0 then ' NOT NULL' END) +
';' 建议语句
FROM
(
(
SELECT A.NAME TABLE_NAME,B.NAME COLUMN_NAME,C.NAME DATA_TYPE,B.MAX_LENGTH ,B.is_nullable
FROM SYS.ALL_OBJECTS A
INNER JOIN SYS.ALL_COLUMNS B ON A.OBJECT_ID = B.OBJECT_ID
INNER JOIN SYS.TYPES C ON B.SYSTEM_TYPE_ID = C.USER_TYPE_ID
WHERE A.NAME = @NAME01
) T1
LEFT JOIN
(
SELECT A.NAME TABLE_NAME,B.NAME COLUMN_NAME,C.NAME DATA_TYPE,B.MAX_LENGTH,B.is_nullable
FROM SYS.ALL_OBJECTS A
INNER JOIN SYS.ALL_COLUMNS B ON A.OBJECT_ID = B.OBJECT_ID
INNER JOIN SYS.TYPES C ON B.SYSTEM_TYPE_ID = C.USER_TYPE_ID
WHERE A.NAME = @NAME02
) T2
ON T1.COLUMN_NAME = T2.COLUMN_NAME
)
WHERE T1.MAX_LENGTH <> T2.MAX_LENGTH AND T1.MAX_LENGTH > T2.MAX_LENGTH
AND T1.max_length <>-1 --排除Nvarchar(max)
AND T1.DATA_TYPE IN ('VARCHAR','NVARCHAR');
go
--对比销售订单表体
DECLARE @NAME01 NVARCHAR(100) ,@NAME02 NVARCHAR(100)
SET @NAME01 = 'T_SAL_ORDERENTRY'
SET @NAME02 = 'T_SAL_XORDERENTRY'
SELECT
T1.TABLE_NAME 表名,T1.COLUMN_NAME 字段名,T1.DATA_TYPE 字段类型,T1.max_length 字段长度,T1.is_nullable 是否允许NULL值,
'<<-销售订单----·----销售订单变更单->>' '<<-销售订单----·----销售订单变更单->>' ,
T2.TABLE_NAME 表名,T2.COLUMN_NAME 字段名,T2.DATA_TYPE 字段类型,T2.max_length 字段长度,T2.is_nullable 是否允许NULL值,