2010-04-04 21 views
0

J'ai un problème avec Timeout, quand j'exécute une commande via l'application, une exception timeout est levée, mais quand je l'exécute directement dans sql il n'y a pas d'exception de timeout!problème avecAsync SqlComman

mon SP prend environ 11 minutes quand je l'exécute directement. pour résoudre ce problème, j'ai trouvé ci-dessous le code ici, mais cela ne fonctionne pas correctement! Immédiatement après beginExecute, IAsyncResult.iscomplete devient true !!!!

où est le problème?

IAsyncResult result = command.BeginExecuteNonQuery(); 

    int count = 0; 
    while (!result.IsCompleted) 
    { 
     Console.WriteLine("Waiting ({0})", count++); 
     System.Threading.Thread.Sleep(1000); 
    } 
    Console.WriteLine("Command complete. Affected {0} rows.", 
    command.EndExecuteNonQuery(result)); 

concernant

Répondre

0

Augmentez à la place le délai d'expiration de la commande (SqlCommand.CommandTimeout) qui est par défaut de 30 secondes.

+0

Je ne savais pas qu'il y avait un autre délai d'attente dans la commande! Merci, Mon problème principal est résolu! Mais qu'arrive-t-il à IAsync? – Alibm

+0

Obtenez-vous des résultats? Que spécifiez-vous en tant que texte de commande? –

0

Une chaîne de connexion par défaut à 15 secondes de délai. Voir au MSDN.

Vous pouvez modifier le délai d'expiration de la chaîne de connexion pour qu'elle dure plus longtemps (connection timeout=600, pour un délai d'attente de 10 minutes).

Voir le site this pour en savoir plus sur les chaînes de connexion. Cela dit, vous devriez chercher à optimiser votre base de données et/ou votre procédure stockée. 11 minutes pour une procédure stockée est très très long. Avez-vous les bons index sur vos tables? La procédure stockée est-elle écrite de la manière la plus optimale?

Mise à jour:

Avez-vous fait que vous utilisez la commande correcte et que les résultats sont corrects? IsComplete étant vrai suggère presque immédiatement que la commande a en effet fini.

+0

Merci d'avoir répondu, J'ai augmenté le délai d'attente dans la chaîne de connexion, mais cela n'a pas fonctionné. dans ce sp Je dois travailler sur 3 table hiérarchiquement, J'ai 3 curseur et les ai utilisés hiérarchiquement pour cette table 3! – Alibm

+0

@Alibm - Quel est le problème avec 3 jointures au lieu des curseurs? – Oded

+0

Je dois lire tous ces enregistrements et les insérer pour newyaer donc j'ai besoin de nouveaux ID pour les tables enfants – Alibm