Question

J'utilise l'objet SqlClient.SqlCommand pour exécuter quelques processus stockés sur ma base de données. Normalement, lorsque je les exécute manuellement via l'Analyseur de requêtes, leur exécution prend jusqu'à 15 minutes.

Donc, évidemment, lorsque je les exécute à l'aide de l'objet SqlCommand, je reçois un délai d'attente SqlCommand.

Je sais que je pourrais définir un nombre très élevé de propriétés de délai d'attente, mais je me demande s'il existe un moyen de lancer les processus et de vous déconnecter. Je n'ai pas besoin d'une valeur de retour.

Des suggestions? Je ne suis pas intéressé par l'optimisation du temps de traitement de chaque sp ici, juste pour essayer de déterminer s'il y a une option de 'régler et d'oublier'.

Voici le contenu de l'objet SqlCommand:

using (SqlCommand cmd = new SqlCommand(@"update tbl_SYS_DATE set RPT_DATE = @inputDate
                                                    exec sp_Get_Bp_Data1
                                                    exec sp_Get_Bp_Data2          
                                                    exec sp_Get_Bp_Data3
                                                    exec sp_channel_data1
                                                    exec sp_channel_data2
                                                    exec sp_channel_data3
                                                    ", con))
Était-ce utile?

La solution

Vous pouvez utiliser une méthode asynchrone, telle que BeginExecuteNonQuery. Le délai d'attente est ignoré pour cela.

Autres conseils

Utilisez l'appel de méthode asynchrone BeginExecuteNonQuery. De la page MSDN

  

La propriété CommandTimeout sera ignorée lors d'appels de méthodes asynchrones tels que BeginExecuteReader.

Vous pouvez exécuter ce code à partir d'un thread en arrière-plan. Vous pouvez consulter l'objet BackgroundWorker .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top