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

今天在信息发布功能时出现了一个怪异的错误(时而出错,时而不会):

System.Data.SqlClient.SqlException: 当前命令发生了严重错误。应放弃任何可能产生的结果。

>>具体的错误提示如下所示:

System.Data.SqlClient.SqlException: 当前命令发生了严重错误。应放弃任何可能产生的结果。
当前命令发生了严重错误。应放弃任何可能产生的结果。
   在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
   在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   在 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
   在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
   在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
   在 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
   在 System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   在 Microsoft.Practices.EnterpriseLibrary.Data.Database.DoExecuteNonQuery(DbCommand command)
   在 Microsoft.Practices.EnterpriseLibrary.Data.Database.ExecuteNonQuery(DbCommand command)
   在 Core.DAL.Article.Update(Article model) 位置 E:\Works\Portal\Core\DAL\Article.cs:行号 149
   在 Core.BLL.Article.Update(Article model) 位置 E:\Works\Portal\Core\BLL\Article.cs:行号 37
   在 LWDocService.Portal.Admin.ArticleEdit.btnSubmit_Click(Object sender, EventArgs e) 位置 E:\Works\Portal\Admin\ArticleEdit.aspx.cs:行号 86
   在 System.Web.UI.WebControls.Button.OnClick(EventArgs e)
   在 System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
   在 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
   在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

>>具体经验判断应该是字段长度的问题,但经网上搜索有些说是没有安装SQL Server 2000 SP1补丁导致的,属于SQL Server的一个bug,但我将数据库附加到MS SQL Server 2005然后再运行时还是出现错误了,而这次的错误提示却与SQL Server 2000不同:

System.Data.SqlClient.SqlException: 传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。参数 15 ("@Content"): 数据类型 0xA7 的数据长度或元数据长度无效。

>>从错误的提示上看应该可以比较直观地判断出是字段Content的长度问题,而为什么SQL Server 2000与SQL Server 2005不同的数据库版本竟会有不同的错误提示呢?大家有兴趣或知道的,请告知 :),在这里老林只想解决出现的问题.....

>>好了,知道问题的根源解决就不困难了,

原来的代码:

db.AddInParameter(dbCommand, "Content", DbType.AnsiString, model.Content);

改为现在的代码:

 db.AddInParameter(dbCommand, "Content", DbType.String, model.Content);

>>那么DbType.AnsiString与DbType.String有任何区别呢?

经查MSDN资料,https://msdn.microsoft.com/zh-cn/library/system.data.dbtype%28VS.80%29.aspx?f=255&MSPPError=-2147217396:

AnsiString——非 Unicode 字符的可变长度流,范围在 1 到 8,000 个字符之间。

String——表示 Unicode 字符串的类型。

>>大家看到了吗?AnsiString最大的范围是在8000个字符之内,如果你的文章内容太多那将可能出错误。

原文链接:SqlException 当前命令发生了严重错误 应放弃任何可能产生的结果

>>小广告:八爪鱼招标网 大家多给意见哦

时间: 2024-07-30 01:12:06

SqlException 当前命令发生了严重错误 应放弃任何可能产生的结果的相关文章

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

开发同事说,某存储过程执行到这个PM_X表的时候,就会抛出"当前命令发生了严重错误.应放弃任何可能产生的结果"的错误: 登陆sqlserver数据库,先大概看了下这个表的行数和大小: exec spaceused 'PM_X',才几十万行,几百兆,不大,真心不大. 然后select * into #nb from PM_X,也直接报错,怀疑此表结构出现了错误,导致表无法全表扫描,因此需要修复它. 因为此系统数据库狠重要,而且其关联的业务很复杂,所以通过更改此服务器的IP 来限制与其联系

atitit.故障排除--- 当前命令发生了严重错误。应放弃任何可能产生的结果sql server 2008

atitit.故障排除--- 当前命令发生了严重错误.应放弃任何可能产生的结果sql server 2008 1. 现象 1 2. 原因:::sql server的bug 或者限制,查询的时候儿使用资源太多超过操作系统/防火墙/安全软件的限制... 2 2.1. 防火墙/安全软件的原因:自动关闭了长时连接and 资源多的连接.. 2 2.2. 并发连接数超过了其承载量,服务器会将其中一些连接Down掉: 2 3. 解决之道:: 2 3.1. 打补丁sp 2 3.2. 使用top n /where

mysql 在windows下,使用 net start mysql 命令发生错误 服务名无效 或 1067

mysql 在windows下,使用 net start mysql 命令发生错误 :服务名无效 或 1067 先使用mysqld -install安装一下 删除data目录下的日志等文件(因为之前的错误或pid文件有问题) net start mysql 启动 来自为知笔记(Wiz)

管家婆SQL SERVER数据库“可能发生了架构损坏。请运行DBCC CHECKCATALOG”修复

用户在使用过过程中,由于突然断电,造成数据无法读取.DBCC检测数据库提示以下错误 消息211,级别23,状态51,第1 行 可能发生了架构损坏.请运行DBCC CHECKCATALOG. 消息0,级别20,状态0,第0 行 当前命令发生了严重错误.应放弃任何可能产生的结果. 如果DBCC检测出现“可能发生了架构损坏.请运行DBCC CHECKCATALOG “这种错误,肯定是系统表出现错误,先使用DBCC CHECKCATALOG对数据库做检测,但发现没有错误. DBCC 执行完毕.如果DBC

金蝶12.0 SQL SERVER数据库可能发生了架构损坏,请运行 DBCC CHECKCATALOG的错误修复

客户的数据库报错联系到我们,我们的工程师拿到客户数据后,对数据库DBCC Checkdb修复,报“消息211,级别23,状态51,第1 行 可能发生了架构损坏.请运行DBCC CHECKCATALOG.” 消息 0,级别 20,状态 0,第 0 行 当前命令发生了严重错误.应放弃任何可能产生的结果. 错误截图如下: 看来用SQL SERVER自身命令是无法修复了,出现这种错误一般是系统表损坏,修复方法一般有以下两种: 第一种方法是使用数据库修复软件把数据提取成脚本,然后再重新生成数据库.这种方法

atitit.故障排除------有时会错误com.microsoft.sqlserver.jdbc.SQLServerException: Connection reset by peer: soc

atitit.故障排除------有时会错误com.microsoft.sqlserver.jdbc.SQLServerException: Connection reset by peer: socket write error 1. 现象::::有时会错误,大概20% 会中间... 1 2. 原因::原因:::sql server的bug 或者限制,查询的时候儿使用资源太多超过操作系统/防火墙/安全软件的限制.. 1 3. 解决方案:::retry3机制 1 4. 参考 1 1. 现象:::

SQL SERVER 2000通过链接服务器发送邮件出现错误

案例环境: 服务器A系统: Windows Server 2000 数据库版本 : Microsoft SQL Server  2000 - 8.00.2282 (Intel X86) 服务器B系统: Windows Server 2003 数据库版本 :  Microsoft SQL Server 2005 - 9.00.5000.00 (Intel X86) 开发人员想在服务器A上通过链接服务器链接到服务器B,执行 exec  [linkedserver].[msdb].dbo.sp_sen

系统断定检查已失败。有关详细信息,请查看 SQL Server 错误日志

[1]报错信息 运行删除时报错 操作的删除语句: IF OBJECT_ID('tempdb..#temp_Robot') IS NOT NULL DROP TABLE #temp_Robot CREATE TABLE #temp_Robot(UserID INT NOT NULL PRIMARY KEY) select * from #temp_robot INSERT INTO #temp_Robot SELECT UserID FROM Db_Tank..Sys_Users_Order WH

【Linux】linux命令大全

109个Linux命令 目录 1       文件管理... 5 1.1          basename. 5 1.2          cat 5 1.3          cd. 5 1.4          chgrp. 5 1.5          chmod. 6 1.6          chown. 7 1.7          comm.. 7 1.8          cp. 7 1.9          cut 8 1.10        dd. 8 1.11