字符串或二进制数据将被截断。该语句已被终止。[SqlException(0x80131904):字符串或二进制数据将被截断

时间:2016-03-10 18:46:46

标签: c# sql-server-2012

我已经搜索了答案,说插入的值可能很长或数据类型不匹配,因为这种类型的错误可能会出现但是这个Web应用程序在我的本地系统上工作正常但是当我将它发布到web,此错误显示,但所有其他网页插入查询工作正常

错误只显示在这一页上。

  

字符串或二进制数据将被截断   声明已经终止。

     

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

     

异常详细信息:System.Data.SqlClient.SqlException:字符串或二进制数据将被截断   声明已经终止。

     

来源错误:

     

在执行当前Web请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息。

     

堆栈追踪:

     

[SqlException(0x80131904):字符串或二进制数据将被截断   声明已经终止。]   System.Data.SqlClient.SqlConnection.OnError(SqlException异常,Boolean breakConnection,Action 1 wrapCloseInAction) +388
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +717
System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) +4515
System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() +61
System.Data.SqlClient.SqlDataReader.get_MetaData() +134
System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +6557689
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds) +6560327
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource
1完成,Int32超时,Task& task,Boolean asyncWrite)+586
  System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,String method)+104
  System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior,String method)+288
  System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)+171
  System.Data.Mapping.Update.Internal.DynamicUpdateCommand.Execute(UpdateTranslator translator,EntityConnection connection,Dictionary 2 identifierValues, List 1 generatedValues)+303
  System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager,IEntityAdapter adapter)+485

     

[UpdateException:更新条目时发生错误。有关详细信息,请参阅内部异常。]

     

System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager,IEntityAdapter adapter)+4502203
  System.Data.Objects.ObjectContext.SaveChanges(SaveOptions options)+583
  System.Data.Entity.Internal.InternalContext.SaveChanges()+ 218

     

[DbUpdateException:更新条目时发生错误。有关详细信息,请参阅内部异常。]
  System.Data.Entity.Internal.InternalContext.SaveChanges()+ 291
  frm_addkarigar.btnadd_Click(Object sender,EventArgs e)+1672
  System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)+155
  System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)+3804

这是插入数据的c#代码

db_mytailorEntities _objdb = new db_mytailorEntities();
int count = _objdb.tbl_karigar.Where(obj => obj.name == txtname.Text).Count();

karigar.name = txtname.Text;
karigar.state = ddlstate.Text;
karigar.city = ddlcity.Text;
karigar.address = txtaddress.Text;
karigar.ph1 = txtph1.Text;
karigar.ph2 = txtph2.Text;
karigar.date_reg = DateTime.Now.ToString();
karigar.name = txtname.Text;

if (txtamntdue.Text == "")
    karigar.amount_due = 0;
else
    karigar.amount_due = int.Parse(txtamntdue.Text);

karigar.K_id = txtname.Text+"-"+(count+1);
karigar.foruser = Session\["userid"\].ToString().TrimEnd();

_objdb.tbl_karigar.Add(karigar);
_objdb.SaveChanges();

Response.Write("<script language>alert('Karigar added successful')</script>");][1]

3 个答案:

答案 0 :(得分:2)

此错误表明您尝试编写的数据对于其中一列来说太大了。它在本地工作,但不在您的生产环境中,这可能是一些事情。架构在本地盒子上与生产环境相同吗?你知道正在写什么数据导致错误吗?

答案 1 :(得分:0)

我遇到了类似的错误,字符串或二进制数据会被截断,但它来自一个SQL表CRUD权限被DBA删除。 因此,如果没有其他工作,我会查看连接字符串和网站(IIS)身份验证/模拟设置。它适用于本地计算机,但不适用于Web服务器。因此,快速检查是在IIS模拟下或在web.config连接字符串中输入您的凭据。

答案 2 :(得分:0)

我有同样的问题。就我而言,问题将出在我没想到有错误的地方。我忘记使ID为“ identity”,以便使其递增。 是的,很简单。