我正在开发电子商务系统(NopCommerce)。我使用的技术是Asp.Net Mvc3
和sql server 2008
放置订单时抛出异常(不是每次都有,但是当数据库加载时)< / p>
将产品添加到订单后,我使用以下功能更新库存
_productService.AdjustInventory(sc.ProductVariant, true, sc.Quantity, sc.AttributesXml);
Error while placing order. Error 0: Error: An error occurred while updating the entries. See the inner exception for details.. Full exception: System.Data.Entity.Infrastructure.DbUpdateException: An error occurred while updating the entries. See the inner exception for details. ---> System.Data.UpdateException: An error occurred while updating the entries. See the inner exception for details. ---> System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
可能存在许多客户在线或我正在更新ProductVariant的情况,这是一个漫长的过程(需要10-12分钟)。那时只会抛出这个异常。
避免此异常的任何解决方案。
答案 0 :(得分:1)
尼丁,
问题是超时,因为默认情况下,SQL“语句”的超时设置为30秒。如果SQL Server完成任务需要30秒以上,您将收到超时。您可能想要自己设置超时。 timeout属性称为CommandTimeout,它是SqlCommand对象的属性。
using (SqlCommand myCommand = new SqlCommand())
{
// Set the new command timeout to 60 seconds
// in stead of the default 30
myCommand.CommandTimeout = 60;
}
此问题的三个原因可能是
某处出现僵局
数据库的统计信息和/或查询计划缓存不正确
3.查询过于复杂,需要调整
请参阅此处的答案Check Out This
希望它有所帮助........