J'ai un petit problème et j'espère que quelqu'un pourra me donner des conseils. J'exécute une commande SQL, mais il semble qu'il faut environ 2 minutes à cette commande 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 l'augmenter 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;
}
}
il faut environ 2 minutes à cette commande pour renvoyer les données car 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 cette
Comme vous faites face à 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
. S'il vous plaît noter le temps est en seconde.
// Setting command timeout to 1 second
scGetruntotals.CommandTimeout = 1;
Comme il faut 2 minutes pour répondre, vous pouvez augmenter le délai d’attente à 3 minutes en ajoutant le code ci-dessous.
scGetruntotals.CommandTimeout = 180;
Note: la valeur du paramètre est en secondes.
Définition du délai d'expiration de la commande sur 2 minutes
scGetruntotals.CommandTimeout = 120;
mais vous pouvez optimiser vos procédures stockées pour diminuer ce temps! comme
Définir CommandTimeout sur 120 n'est pas recommandé. Essayez d'utiliser la pagination comme mentionné ci-dessus. Définir CommandTimeout sur 30 est considéré comme normal. Tout ce qui est plus que cela est considéré comme une mauvaise approche et cela conclut généralement que quelque chose ne va pas avec la mise en œuvre. Maintenant, le monde fonctionne à l'approche de MiliSeconds.