Augmentation du délai D'attente de commande pour la commande SQL
J'ai un petit problème et en espérant que quelqu'un peut me donner quelques conseils. J'exécute une commande SQL, mais il semble que cette commande prenne environ 2 minutes pour renvoyer les données car il y a beaucoup de données. Mais le temps de connexion par défaut est de 30 secondes, Comment puis-je augmenter cela et l'appliquer à cette commande?
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;
}
}
4 réponses
Cette commande environ 2 minutes pour renvoyer les données comme il y a beaucoup de données
Mauvaise Conception. Pensez à utiliser la pagination ici.
Le temps de connexion par défaut est de 30 secondes, Comment puis-je augmenter ce
Comme vous êtes confronté à un timout sur votre commande, vous devez donc augmenter le timout de votre commande sql . Vous pouvez le spécifier dans votre commande comme ceci
// Setting command timeout to 2 minutes
scGetruntotals.CommandTimeout = 120;
Ajoutez le délai d'attente de votre SqlCommand
. Veuillez noter que le temps est en deuxième.
// Setting command timeout to 1 second
scGetruntotals.CommandTimeout = 1;
Puisqu'il faut 2 minutes pour répondre, vous pouvez augmenter le délai d'attente de 3 minutes en ajoutant le code ci-dessous
scGetruntotals.CommandTimeout = 180;
Note : la valeur du paramètre est exprimée en secondes.
Il n'est pas recommandé de définir CommandTimeout sur 120. Essayez d'utiliser la pagination comme mentionné ci-dessus. Définir CommandTimeout sur 30 est considéré comme normal. Rien de plus que cela est considéré comme une mauvaise approche et qui conclut généralement quelque chose de mal avec la mise en œuvre. Maintenant, le monde fonctionne sur L'approche MiliSeconds.