2010-02-10 4 views
0

Je fais une mise à jour simple, d'un bit dans une table en utilisant le code ci-dessous. Cependant, parfois le programme se bloque sur myCommand.ExecuteNonQuery(); et je ne sais pas pourquoi. Si le serveur Sql est en panne, il tombera dans l'instruction catch comme prévu, mais parfois, pour apparemment pas de raison, il se bloquera simplement sur l'instruction d'exécution. Toutes les idées .... Une partie de mon code est ci-dessous.Le service C# windows se bloque parfois lors de l'exécution de la mise à jour sql

Merci

SqlCommand myCommand = new SqlCommand (sqlCommand); connection = new SqlConnection (constr); myCommand.CommandType = CommandType.Text;

 myCommand.Connection = connection; 

     try 
     { 
      connection.Open(); 
      myCommand.ExecuteNonQuery(); 
     } 
     catch (Exception ex) 
     { 
      throw new Exception("There was an inserting information from the Sql server<br>" + 
       "The server error was: <br>" + ex.Message + "<br>"); 

     } 
     finally 
     { 
      this.CloseConnection(); 
     } 
+0

Si ce n'est pas le délai d'attente de connexion (c'est-à-dire que le serveur est en panne), il est plus que probable qu'il s'agira du SQL que vous exécutez. Pouvez-vous poster votre instruction SQL en cours d'exécution? MISE À JOUR – AdaTheDev

+0

ServiceWatchDog SET watchCount = @watchCount où « 1 » id = Je suis essentiellement: un bit 1 ... très simple – sdmiller

Répondre

2

Un dépassement de délai est probablement la cause. Bien qu'il n'y ait pas assez d'informations dans votre message pour être certain. Essayez de définir le command execution timeout.

+0

Je n'ai pas un ensemble de délai d'attente ... Je suppose qu'il ya un délai d'attente par défaut . Ce n'est pas le cas? – sdmiller

+0

La valeur par défaut est 30. Le blocage de code avec ExecuteNonQuery() est une requête par défaut ou un blocage. Y a-t-il plusieurs processus mettant à jour les données? – BennyM

+0

Il y a deux services qui accèdent à ce bit, l'un écrit à 0 et l'autre écrit à 1 .... collision possible? Comment pourrais-je empêcher cela de se produire? – sdmiller

Questions connexes