我在尝试更新表格中的行时遇到问题。我收到了一个错误:
字符串或二进制数据将被截断
但是,我已经仔细检查了插入数据的长度和列长度,它们都在参数范围内,所以我对可能导致它的原因感到茫然。
这只是表格中每一行的简单更新语句,如下所示:
UPDATE [tblAssets]
SET [DepartmentID] = 'B13F3C7B7489';
tblAssets.DepartmentID列是一个char,所以我不明白我怎么可能遇到截断错误。
列定义如下:
[DepartmentID] [char](20) NULL
我的帐户在整个服务器上都有管理权限,所以这不是权利问题。我甚至尝试创建一个变量并通过select语句从另一个表中加载适当的数据,但这也不起作用。
我可以手动将该数据剪切粘贴到单个记录中,但它不允许我通过SQL查询执行更新到表中。服务器是MS SQL 2008 R2。
答案 0 :(得分:1)
我只是想猜测一下你不知何故在你的更新字符串值中窃取了一个unicode或不可见的字符:当你尝试使用unicode数据更新常规字符(或varchar)字段时,会得到相同的错误消息。
答案 1 :(得分:1)
事实证明桌面上有一个触发更新。此触发器未显示在数据库的triggers文件夹中。运行此声明向我展示:
SELECT * FROM sys.triggers WHERE parent_id = object_id('tblAssets')
选择表,打开触发器文件夹,然后右键单击触发器并禁用它可以使更新正常工作。我最初忽略了表级的触发器文件夹。