Domanda

Sto usando l'oggetto SqlClient.SqlCommand per eseguire alcuni proc memorizzati sul mio db. Normalmente, quando li eseguo manualmente tramite Query Analyzer, il completamento richiede fino a 15 minuti.

Quindi ovviamente quando li eseguo usando l'oggetto SqlCommand ottengo un timeout SqlCommand.

So che potrei impostare la proprietà di timeout su un numero molto alto, ma mi chiedo se in alternativa c'è un modo per dare il via ai proc e disconnettersi. Non ho bisogno di un valore di ritorno.

Qualche suggerimento? Non mi interessa ottimizzare il tempo di elaborazione di ogni sp qui, sto solo cercando di determinare se esiste un'opzione 'imposta e dimentica'.

Ecco il contenuto dell'oggetto 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))
È stato utile?

Soluzione

Puoi usare un metodo asincrono, come BeginExecuteNonQuery. Il timeout viene ignorato per questo.

Altri suggerimenti

Utilizza la chiamata del metodo asincrono BeginExecuteNonQuery. Da la pagina MSDN

  

La proprietà CommandTimeout verrà ignorata durante le chiamate di metodo asincrone come BeginExecuteReader.

Potresti eseguire quel codice da un thread in background. È possibile esaminare l'oggetto BackgroundWorker .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top