web-dev-qa-db-fra.com

Augmentation du délai de commande pour la commande SQL

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;
    }
}
57

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;
105
Ehsan

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;
20
Ajay P

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.

2
Akash Srivastava

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

  • enlever courser ou while et etc
  • en utilisant la pagination
  • en utilisant #temptable
  • optimiser les tables jointes
0
Emam

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.

0
Pranav Kulshrestha