2013-08-26 8 views
36

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

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; 
    } 
} 
+3

タイムアウト値を設定ファイルに追加することを検討してください。そうしないと、コードを再デプロイする必要があります。 – christiandev

答えて

73

それは多くのデータ

悪いデザインがあるとしてデータを戻すには、このコマンドには約2分かかります。ここでページングの使用を検討してください。

デフォルトの接続時間は、あなたがあなたのsql commandのTIMOUTを増やす必要があるので、あなたのコマンドにTIMOUTに直面しているとどのように私はこの

を増やすか、30秒です。それが応答するために2分かかりますので、あなたは以下のコードを追加することによって、3分にタイムアウトを増やすことができ、この

// Setting command timeout to 2 minutes 
scGetruntotals.CommandTimeout = 120; 
+0

あなたはそれを受け入れることができます。私は真剣に2分かかるクエリを使用することを控えますが。ページネーションを試してみてください。 – Ehsan

+0

タイムアウトを10分または30分に増やすことの不利な点はありますか? –

+0

@ManishKumarSinghクエリが結果を返すために10分間待つのは誰ですか?これはミリ秒の時代です。 – Ehsan

14

SqlCommandのタイムアウトを追加します。時間は秒ですのでご注意ください。

// Setting command timeout to 1 second 
scGetruntotals.CommandTimeout = 1; 
+9

「ありがとうございます」と書いていただきありがとうございます。 – ShaileshDev

+0

タイムアウトを10分または30分に増やすことの不利な点はありますか? –

+0

マニッシュ、データを取得するプロセスが10分か30分かかりますか?その夜通しのプロセスとその唯一のものがどこにも干渉しないなら、30分はいかがですか。または、結果を待っていない場合は、どうしてですか? – MiscellaneousUser

0

ようなあなたのコマンドでそれを指定することができ

scGetruntotals.CommandTimeout = 180; 

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

0

CommandTimeoutを120に設定することはお勧めしません。上記のように改ページを使用してみてください。 CommandTimeoutを30に設定すると、正常とみなされます。それ以上のものは、悪いアプローチを考えており、通常、実装に何か問題があると結論づけます。今、世界はMiliSecondsアプローチを実行しています。

関連する問題