A server error occured on the current command. The results, if any, should be discarded.

来源:互联网 发布:数据交换标准 编辑:程序博客网 时间:2024/06/05 00:53

A server error occured on the current command. The results, if any, should be discarded.


近日公司有一个项目,该项目在C#调用SQL Server中的存储过程的时候发生了异常,奇怪的是该项目一直运行稳定,并且该异常只发生在特定的情况下。


Review了一下日志,重建了发生异常的现场,Debug了一下,错误信息是:

A server error occured on the current command. The results, if any, should be discarded.


直接在查询分析器Debug存储过程,几经周折,发现错误居然发生在下面这条语句中

INSERT INTO tbl(str, ...

错误信息是:

当前命令发生了严重错误。应放弃任何可能产生的结果。


注:搞笑的是只能特定的字符串INSERT到str字段中才会出异常,删掉几个字符再插入一下就没问题了


尝试了若干种办法,最后发现是由str上的索引导致的,执行下列语句后,问题成功解决:

DROP INDEX tbl.index_str;


CREATE NONCLUSTERED INDEX index_str ON tbl

(

str ASC

);


后来发现执行下述语句可以缓解这个问题


网上检索了一下,还有其他人也遇到了这个问题:

微软的原始说明:http://support.microsoft.com/kb/827366/en-us

这个也很经典,虽然不是同一个问题:http://blog.csdn.net/ghlfllz/article/details/8082982