连接SQL Server Express 2012超时
本文关键字:2012 超时 Express Server SQL 连接 | 更新日期: 2023-09-27 17:54:00
我的应用程序是asp.net MVC3,我使用SQLExpress 2012。我得到以下错误
超时过期。操作完成前的超时时间或服务器没有响应。
当我尝试运行以下命令时:
public static List<vw_MasterView> GetMasterView(DateTime? fromDate, DateTime? toDate)
{
if (fromDate == null) fromDate = new DateTime(1900, 1, 1);
if (toDate == null) toDate = DateTime.Now;
using (DALDataContext ctx = new DALDataContext())
{
var q = from c in ctx.vw_MasterViews
where c.FirstVisitDate >= fromDate && c.LastVisitDate <= toDate
select c;
return q.ToList();
}
}
我确实将连接时间(server/advance属性)增加到6000。
当我从设计器(在SQL Server)运行视图时,我得到相同的错误信息,然而,当我运行查询(在SQL Server)它工作正常,它需要54秒来执行。
我很感激你的建议,提前谢谢。
您可能需要设置DBContext的连接超时时间:
ctx.CommandTimeout = 200;
DataContext
类的CommandTimeout
默认值为30秒。任何耗时超过30秒的数据库查询(正如您所写的,大约需要60秒)都会抛出一个System.Data.SqlClient。SqlException: Timeout expired Exception。
如果您查看自动生成的DALDataContext
子类,您将看到一些部分方法声明,您的兴趣点应该是OnCreated
方法。您可以在另一个部分类中定义OnCreated
方法的主体,并使用与自动生成类相同的全名,并通过以下方式设置所需的超时间值:
partial class DALDataContext : System.Data.Linq.DataContext
{
partial void OnCreated()
{
this.CommandTimeout = 100;
}
}