Pergunta

Estou usando o objeto SQLCLIENT.SQLCommand para executar alguns procs armazenados no meu banco de dados. Normalmente, quando eu os executo manualmente via analisador de consulta, eles levam até 15 minutos para serem concluídos.

Então, obviamente, quando os executo usando o objeto SQLCommand, recebo um tempo limite do SQLCommand.

Sei que poderia definir a propriedade de tempo limite para um número muito alto, mas estou me perguntando se, alternativamente, existe uma maneira de apenas iniciar os Procs e desconectar. Eu não preciso de um valor de retorno.

Alguma sugestão? Não estou interessado em otimizar o tempo de processamento de cada SP aqui, apenas tentando determinar se há uma opção 'Defina e esqueça'.

Aqui está o conteúdo do 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))
Foi útil?

Solução

Você pode usar um método assíncrono, como o BeginexecutenonQuery. O tempo limite é ignorado para isso.

Outras dicas

Use o método assíncrono chamado beginexecutenonQuery. A partir de A página do MSDN

A propriedade CommandTimeout será ignorada durante chamadas de método assíncrono, como o BEGINEXETEREADER.

Você pode executar esse código a partir de um encadeamento de segundo plano. Você pode olhar para o BackgroundWorker objeto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top