Pregunta

Estoy usando el objeto SqlClient.SqlCommand para ejecutar algunos procesos almacenados en mi base de datos. Normalmente, cuando los ejecuto manualmente a través del Analizador de consultas, tardan hasta 15 minutos en completarse.

Entonces, obviamente, cuando los ejecuto usando el objeto SqlCommand obtengo un tiempo de espera de SqlCommand.

Sé que podría establecer la propiedad de tiempo de espera en un número muy alto, pero me pregunto si, alternativamente, hay una manera de simplemente iniciar los procesos y desconectarse. No necesito un valor de retorno.

¿Alguna sugerencia? No estoy interesado en optimizar el tiempo de procesamiento de cada sp aquí, solo trato de determinar si hay una opción 'configurarlo y olvidarlo'.

Aquí está el contenido del objeto 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))
¿Fue útil?

Solución

Puede usar un método asíncrono, como BeginExecuteNonQuery. El tiempo de espera se ignora para eso.

Otros consejos

Use el método asincrónico para llamar a BeginExecuteNonQuery. Desde la página MSDN

  

La propiedad CommandTimeout se ignorará durante las llamadas a métodos asincrónicos como BeginExecuteReader.

Podría ejecutar ese código desde un hilo de fondo. Puede examinar el objeto BackgroundWorker .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top