C# 在Windows服务中接收到与预期不同的SqlException
我有一个很奇怪的问题。我的windows服务由于SqlException而失败:“字符串或二进制数据将被截断。”对于INSERT语句 这是一个需要解决的基本错误,但不是真正的错误。如果我进行跟踪并直接在数据库上运行查询,则不会出现错误。所有数据在方式上都比数据库上的限制短 我最终从查询中取出了一些必需的列,希望生成一个不同的错误:“无法将值NULL插入列'Type'” 然而,我没有得到这个错误!我仍然得到“字符串或二进制数据将被截断。” 如果直接在数据库上从跟踪运行查询,则会出现此错误 有人知道这里会发生什么吗?谢谢 编辑以添加 这是一个应该给我不能插入值错误的查询。另一个查询相同,但参数更多:C# 在Windows服务中接收到与预期不同的SqlException,c#,sql-server,windows-services,sqlexception,C#,Sql Server,Windows Services,Sqlexception,我有一个很奇怪的问题。我的windows服务由于SqlException而失败:“字符串或二进制数据将被截断。”对于INSERT语句 这是一个需要解决的基本错误,但不是真正的错误。如果我进行跟踪并直接在数据库上运行查询,则不会出现错误。所有数据在方式上都比数据库上的限制短 我最终从查询中取出了一些必需的列,希望生成一个不同的错误:“无法将值NULL插入列'Type'” 然而,我没有得到这个错误!我仍然得到“字符串或二进制数据将被截断。” 如果直接在数据库上从跟踪运行查询,则会出现此错误 有人知道
declare @p4 int
set @p4=60029550
exec sp_executesql N'EXECUTE ssl_GetTTDVersionCallSeq 1, @TTDVersionIDVal OUTPUT
INSERT INTO TTDVersion(Task,ID) VALUES (@P0,@TTDVersionIDVal)',N'@P0 int,@TTDVersionIDVal int output',@P0=200003762,@TTDVersionIDVal=@p4 output
select @p4
已找到此错误的原因。这根本不在上面发布的查询中。表上有一个触发器,用于设置LastUpdatedBy列 大多数用户都有4个字符的用户名,但运行服务的用户没有。柱极限为4 避免此问题:
- 触发器可能有问题。它们不会立即可见-sp_帮助“表”甚至不会返回它们。如果出现错误,您甚至无法跟踪查询
- 以用户身份运行查询。(我想这么做,但它是一个管理员用户,当时有人在使用它。)
- 检查所有列信息与它们中的内容以及查询中的内容。然后检查信息是如何到达那里的。在这种情况下,默认约束可能会导致相同的问题