连接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秒来执行。

我很感激你的建议,提前谢谢。

连接SQL Server Express 2012超时

您可能需要设置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;
    }
}