为什么Sql Server连接TimeOut

时间:2009-04-28 13:03:38

标签: asp.net sql-server timeout enterprise-library connection-string

我正在为我的Sql数据库使用Enterprise Library Data。我使用的是3.1版。 我正在使用此代码执行长时间运行的sp(约1分钟)。

Dim db As SqlDatabase = New SqlDatabase(System.Web.Configuration.WebConfigurationManager.ConnectionStrings("portalConnection").ConnectionString)
                    db.ExecuteNonQuery("spnametoexecute")

连接字符串看起来像这样

<add name="portalConnection" connectionString="Server=IP;Database=DBName;uid=User;pwd=PWD; Timeout=180;"
  providerName="System.Data.SqlClient" />

Provlem是我总是得到一个TimeOut异常。那是为什么?

System.Data.SqlClient.SqlException: Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.

4 个答案:

答案 0 :(得分:2)

嗯,有几种可能性:

  • 您的查询过于复杂且耗时太长(尝试编写更好的TSQL,添加索引或增加超时)
  • 您被另一个SPID阻止(可能是您自己在另一个连接上)

通常,第二个是问题。查看阻塞等(sp_who / sp_who2)以查看是否有任何块。并使用trace / profiler来调查第一个选项。

答案 1 :(得分:0)

我认为您设置了错误的服务器IP,或者您的服务器也没有配置。检查您的服务器配置中是否允许Pipes和tcp / ip。它经常被遗忘。

答案 2 :(得分:0)

您是否总是获得超时,或者仅在长时间运行的查询执行时?手动运行时 - 也就是说,在管理工作室中,需要多长时间?您的连接设置为3分钟超时,这是一个非常大的时间。

你需要在几个级别攻击它:

  1. 简介&amp;优化查询
  2. 使用非常简单的查询进行测试,以查看是否存在连接问题

答案 3 :(得分:0)

我不太熟悉企业数据库,但我会看看Sql Database对象是否具有超时属性。尝试在代码中设置超时并测试行为。