0

我正在为我的 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 是我总是得到一个超时异常。这是为什么 ?

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

4 回答 4

2

嗯,有几种可能:

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

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

于 2009-04-28T13:07:30.557 回答
0

我认为您设置了不正确的服务器 ip,或者您的服务器也没有配置好。检查您的服务器配置中是否允许管道和 tcp/ip。它经常忘记。

于 2009-04-28T13:06:49.140 回答
0

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

于 2009-04-28T16:30:28.213 回答
0

您总是超时,还是仅在长时间运行的查询执行时才超时?当您手动运行它时 - 即在 Management Studio 中,需要多长时间?您的连接设置为在 3 分钟后超时,这是一个非常长的时间。

您需要在几个级别上对此进行攻击:

  1. 分析和优化查询
  2. 用非常简单的查询进行测试,看看是否存在连接问题
于 2009-04-28T13:13:40.823 回答