删除行时“字符串或二进制数据将被截断”

时间:2010-08-17 06:35:46

标签: sql sql-server

我正在使用Microsoft SQL Server Management Studio Express连接到我们的SQL Server 2005(想想它的2005,它的版本9.000的东西)。我有一个包含一列的表,可以保存大量文本。我已将列类型设置为文本。当我在此列中有一行包含大量文本时,我无法将其删除。当我尝试删除它时,我收到消息“字符串或二进制数据将被截断”。如果我尝试编辑该行,我会收到相同的消息。我该怎么办?

相当不错:我通过drop table修复它并再次创建它,但我想要一个解决方案!

5 个答案:

答案 0 :(得分:24)

虽然我迟到了,但当我查看原始海报对问题的描述时,听起来他们正试图从表编辑器界面中删除该行。我刚刚遇到了一个包含带有长文本的“text”列的表的同一问题,看起来这个问题实际上可能与编辑器本身的限制有关。根据我自己的调查,您似乎无法编辑文本列超过4000个字符的行。我使用SSMS 2008 R2进行了测试。

希望这可以帮助其他人遇到此错误。

答案 1 :(得分:12)

我有同样的问题并解决了...... 选择表格的前200行后,单击"显示标准窗格"(工具栏的左侧) 现在取消选中您的ntext列(包含您正在讨论的大文本的列) 现在您可以删除或更新任何行:)

答案 2 :(得分:4)

通常,当您将长值插入无法存储它的列时会发生此类错误。当您删除该行时,检查您是否没有任何可以代表您执行此操作的触发器或任何相关逻辑(例如,用于记录目的/审计跟踪)

答案 3 :(得分:1)

我将数据类型更改为nvarchar(MAX),并且能够按照我认为合适的方式进行编辑和删除。

答案 4 :(得分:0)

我发现有一个触发器审核了对记录的更改(感谢Tomas Vana),但目标审核记录的操作报告的varchar字段有限(varchar(1000))。它试图审计删除具有varchar(max)字段的记录... duh!

我将日志中的操作报告字段更改为varchar(max)并修复了它... 血腥明显......:)