web-dev-qa-db-ja.com

SQLコマンドのコマンドタイムアウトの増加

少し問題がありますが、誰かが私にアドバイスをしてくれるといいのですが。 SQLコマンドを実行していますが、大量のデータがあるため、データを返すには約2分かかるようです。しかし、デフォルトの接続時間は30秒です。これをどのように増やし、このコマンドに適用しますか?

public static DataTable runtotals(string AssetNumberV, string AssetNumber1V)
{
    DataTable dtGetruntotals;

    try
    {
        dtGetruntotals = new DataTable("Getruntotals");

        //SqlParameter AssetNumber = new SqlParameter("@AssetNumber", SqlDbType.VarChar, 6);
        //AssetNumber.Value = AssetNumberV; 

        SqlParameter AssetNumber = new SqlParameter("@AssetNumber", SqlDbType.VarChar, 10);
        AssetNumber.Value = AssetNumberV;

        SqlParameter AssetNumber1 = new SqlParameter("@AssetNumber1", SqlDbType.VarChar, 10);
        AssetNumber1.Value = AssetNumber1V;

        SqlCommand scGetruntotals = new SqlCommand("EXEC spRunTotals @AssetNumber,@AssetNumber1 ", DataAccess.AssetConnection); 
        // scGetruntotals.Parameters.Add(AssetNumber);
        scGetruntotals.Parameters.Add(AssetNumber);
        scGetruntotals.Parameters.Add(AssetNumber1);

        SqlDataAdapter sdaGetruntotals = new SqlDataAdapter();
        sdaGetruntotals.SelectCommand = scGetruntotals;
        sdaGetruntotals.Fill(dtGetruntotals);

        return dtGetruntotals;
    }
    catch (Exception ex)
    {
        MessageBox.Show("Error Retriving totals Details: Processed with this error:" + ex.Message);
        return null;
    }
}

大量のデータがあるため、データを返すには約2分かかります

悪いデザイン。ここでページングの使用を検討してください。

デフォルトの接続時間は30秒ですが、これを増やすにはどうすればよいですか

コマンドのタイムアウトに直面しているため、 sql command のタイムアウトを増やす必要があります。このようにコマンドで指定できます

// Setting command timeout to 2 minutes
scGetruntotals.CommandTimeout = 120;
105
Ehsan

SqlCommandのタイムアウトを追加します。時間は秒単位です。

// Setting command timeout to 1 second
scGetruntotals.CommandTimeout = 1;
20
Ajay P

応答には2分かかるため、以下のコードを追加してタイムアウトを3分に増やすことができます

scGetruntotals.CommandTimeout = 180;

:パラメーター値は秒単位です。

2

コマンドタイムアウトを2分に設定する

 scGetruntotals.CommandTimeout = 120;

ただし、ストアドプロシージャを最適化して、その時間を短縮できます。のような

  • コースターまたはwhileなどの削除
  • ページングを使用する
  • #temptableを使用する
  • 結合テーブルの最適化
0
Emam

CommandTimeoutを120に設定することは推奨されません。上記のページネーションを使用してみてください。 CommandTimeoutを30に設定することは、通常と見なされます。それ以上のものは悪いアプローチと見なされ、通常、実装に問題があると結論付けます。現在、世界はMiliSeconds Approachで実行されています。

0