9

我正在尝试将 SqlDataSource 的超时时间延长超过 30 秒(似乎是默认值)。我正在尝试运行一个必须运行 100,000 条记录的存储过程。在繁忙时段,它会超时。我在 2003 服务器上使用 ASP.NET 4.0 和 IIS 6.0。

错误消息: 超时已过期。在操作完成之前超时时间已过或服务器没有响应。

我试图延长超时无济于事:

< asp:SqlDataSource ID="dsTest" EnableCaching="true" CacheDuration="604800" runat="server" ConnectionString="<%$ ConnectionStrings:SuperNARIC %>" SelectCommand="selectStatus" SelectCommandType="StoredProcedure" onselecting="dsTest_Selecting" >
    <SelectParameters>
        < asp:ControlParameter ControlID="ddlCar" Name="CountryID" PropertyName="SelectedValue" Type="Int32" />
    < /SelectParameters>
< /asp:SqlDataSource>



protected void dsTest_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
    {
        e.Command.CommandTimeout = 300;
    }

任何帮助将不胜感激。

谢谢

4

8 回答 8

13

就像这里提到的,这对我有用。

您可以像这样增加 Timeout 属性

protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
        {
            e.Command.CommandTimeout = 0;
        }

将超时设置为 0 表示没有超时

于 2014-02-21T14:59:22.233 回答
9

有两种超时类型:ConnectionTimeoutCommandTimeout

ConnectionTimeout 确定您的应用程序等待建立与服务器的连接的最长时间。

CommandTimeout:允许执行命令的最长时间。

确保两者都设置。在命令中:

 command.CommandTimeout = 300;

Selecting注意:如果您的命令是数据源的一部分,这可以在事件中实现。e.Command.CommandTimeout = 0;0表示无限期等待。

连接字符串

SqlConnectionStringBuilder cs = new SqlConnectionStringBuilder(connectionString);
cs.ConnectTimeout = 300;

或者:

<add name="MyConnectionString" connectionString="Data Source=.\SQLEXPRESS; Database=MyDB; Integrated Security=True;Pooling=True;connection timeout=30" providerName="System.Data.SqlClient" />

注意:尝试全局设置连接字符串超时,可能在您的配置文件中。

于 2012-04-23T19:26:07.367 回答
3

超时通常在您的连接字符串中设置。有关完整示例,请参见http://www.connectionstrings.com/

于 2012-04-23T19:09:07.883 回答
1

您需要确保您的CommandTimeout和您ConnectionStringConnect Timeout都设置为防止长时间运行的存储过程超时。如果你不设置连接超时,你会在存储过程完成之前超时,即使存储过程命令本身没有超时。

于 2012-04-23T19:11:52.127 回答
0

最大连接超时值可以是 2147483647。尝试将连接超时值设置到 Web Config 中的连接字符串中,如下所示

<connectionStrings> <add name="ConnectionString" connectionString="Data Source=144681;Initial Catalog=Customer;Persist Security Info=True;User ID=xxxxx;Password=yyyyy" providerName="System.Data.SqlClient" /> </connectionStrings>

于 2012-04-23T20:21:36.233 回答
0

连接超时/连接超时/超时 默认值 - 15 秒 在终止尝试并生成错误之前等待连接到服务器的时间长度(以秒为单位)。有效值大于或等于 0 且小于或等于 2147483647。

string myconstr = "Data Source=(local);Initial Catalog=AdventureWorks;"
    + "Integrated Security=SSPI;Connection Timeout=30"

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring(v=vs.100).aspx

于 2012-04-23T19:09:20.787 回答
0

这对我有用:

  <script runat="server">
    protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
    {
    e.Command.CommandTimeout = 0;
    }
    </script>


<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
ConnectionString="Your Connection String" 
ProviderName="Teradata.Client.Provider"
SelectCommand="A SELECT COMMAND THAT TAKES A LONG TIME"
DataSourceMode="DataSet"
onselecting="SqlDataSource1_Selecting">
于 2019-02-12T10:35:10.903 回答
-1

There's a timeout for both the SQL and the page response time.

Server.ScriptTimeout = 120; 
e.Command.CommandTimeout = 120;
于 2013-04-23T15:19:37.900 回答