9

SqlDataSourceのタイムアウトを30秒を超えて延長しようとしています(デフォルトのようです)。100,000のレコードを実行する必要があるストアドプロシージャを実行しようとしています。忙しい時期にはタイムアウトになります。2003サーバーでASP.NET4.0とIIS6.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の2つのタイプがあります。

ConnectionTimeout アプリがサーバーへの接続を確立するために待機する最大時間を決定します。

CommandTimeout:コマンドの実行に許可される最大時間。

必ず両方を設定してください。コマンドで:

 command.CommandTimeout = 300;

Selecting注:これは、コマンドがDataSourceの一部である場合にイベントで実装できます。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

実行時間の長いストアド プロシージャのタイムアウトを防ぐために、CommandTimeoutConnectionStringの両方が設定されていることを確認する必要があります。Connect Timeout接続タイムアウトを設定しないと、ストアド プロシージャ コマンド自体がタイムアウトしていなくても、ストアド プロシージャが終了する前にタイムアウトになります。

于 2012-04-23T19:11:52.127 に答える
0

最大接続タイムアウト値は2147483647です。以下のように、WebConfigの接続文字列に接続タイムアウト値を設定してみてください。

<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 に答える