字符串或二进制数据将被截断 - 消息8152

时间:2013-07-24 15:49:41

标签: sql sql-server

我在尝试更新表格中的行时遇到问题。我收到了一个错误:

  

字符串或二进制数据将被截断

但是,我已经仔细检查了插入数据的长度和列长度,它们都在参数范围内,所以我对可能导致它的原因感到茫然。

这只是表格中每一行的简单更新语句,如下所示:

UPDATE [tblAssets]
SET [DepartmentID] = 'B13F3C7B7489';

tblAssets.DepartmentID列是一个char,所以我不明白我怎么可能遇到截断错误。

列定义如下:

[DepartmentID] [char](20) NULL

我的帐户在整个服务器上都有管理权限,所以这不是权利问题。我甚至尝试创建一个变量并通过select语句从另一个表中加载适当的数据,但这也不起作用。

我可以手动将该数据剪切粘贴到单个记录中,但它不允许我通过SQL查询执行更新到表中。服务器是MS SQL 2008 R2。

  • 此问题已解决。在桌面上有一个我不知道的触发器。答案如下。

2 个答案:

答案 0 :(得分:1)

我只是想猜测一下你不知何故在你的更新字符串值中窃取了一个unicode或不可见的字符:当你尝试使用unicode数据更新常规字符(或varchar)字段时,会得到相同的错误消息。

答案 1 :(得分:1)

事实证明桌面上有一个触发更新。此触发器未显示在数据库的triggers文件夹中。运行此声明向我展示:

SELECT * FROM sys.triggers WHERE parent_id = object_id('tblAssets')

选择表,打开触发器文件夹,然后右键单击触发器并禁用它可以使更新正常工作。我最初忽略了表级的触发器文件夹。