【问题标题】:Error: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding错误:超时已过。操作完成前超时时间已过或服务器无响应
【发布时间】:2011-07-28 19:17:05
【问题描述】:

我使用的环境是:.NET (2.0) 和 SQL Server 2005。

场景:在 .NET 表单中,系统会提示用户输入两个变量,这些变量将提供给 SQL Server 中的存储过程。从存储过程返回记录后,.NET 应用程序会将这些记录导入.csv 文件。

这里的技巧是存储过程是动态的。返回的记录并不总是相同的列或填充相同的临时表。当存储过程在 30 秒内运行时,.NET 应用程序可以工作。

我在我的应用程序中增加了我的conn.CommandTimeout = 6000,并且我也将 SQL Server 中的“远程查询连接”增加到了 6000,但是对于那些运行时间超过 30 秒的变量仍然失败。

非常感谢任何建议。

谢谢 柴迪

【问题讨论】:

    标签: .net sql-server sql-server-2005


    【解决方案1】:

    这可能是因为您在连接上设置了命令超时,而不是命令对象本身。看不到您的代码,但如果您使用 DataReader、DataAdapter 等,请尝试在这些对象上设置 CommandTimeout。其他一些可能性:

    1. 在运行查询之前已超过连接超时。不太可能,但连接超时是多少?它应该 >= 任何 CommandTimeout。
    2. 没有执行 CommandTimeout 调用。
    3. 其他东西稍后会覆盖 CommandTimeout 调用。

    【讨论】:

    • Aaron,对不起,我应该包含我的代码。不确定通过在对象上设置 commandTimout 是什么意思。感谢其他建议。非常感谢。
    • 代码:私有函数 GetSampleData() As DataTable Dim DS As DataSet Dim objConn As New SqlConnection("Data Source=***;Initial Catalog=***;Integrated Security=True;Packet Size= 4096;Connect Timeout=0;Max Pool Size = 300") 将 objCmd 作为新的 SqlCommand 将 myDataAdapter 调暗为 SqlDataAdapter objCmd.CommandTimeout = 0 myDataAdapter = New SqlDataAdapter("Hierarchy.GethierarchyTree", objConn) myDataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure myDataAdapter.SelectCommand.Parameters.Add(新参数...等等。
    • 我建议您使用该代码更新问题,使其比评论更易读(使用 {} 按钮)。
    猜你喜欢
    • 2012-07-24
    相关资源
    最近更新 更多