我在我的固定程序中写了一个查询,比如,
INSERT INTO Table1
(UniqueStr, Col1, Col2)
SELECT UniqueStr, Col1, Col2
FROM Table2
WHERE ...
它给了我错误:
字符串或二进制数据将被截断。
以下是统计数据。
Table1.UniqueStr
是VARCHAR(11)
Table2.UniqueStr
是VARCHAR(20)
Table2
包含UniqueStr
个值为11个字符且包含15个字符的记录。SELECT
语句永远不会返回UniqueStr
长度大于11的记录。第一个奇怪的情况是 - 即使SELECT
语句没有返回任何内容(当单独运行时),它在与INSERT
一起运行时会产生截断错误(即INSERT ... SELECT)。
第二个奇怪的情况是 - 它仅在生产环境中提供错误。它在UAT
环境中没有出错。在生产环境中,它运行了1天。
谁能告诉我可能是什么问题?
注意:我使用SUBSTRING
函数修复了此错误,但我无法找出SQL Server出现此错误的原因?