Объект SqlCommand - установить его и забыть?

2

Я использую объект SqlClient.SqlCommand для запуска нескольких хранимых procs на моем db. Обычно, когда я запускаю их вручную через Query Analyzer, они занимают до 15 минут.

Поэтому, когда я запускаю их с помощью объекта SqlCommand, я получаю тайм-аут SqlCommand.

Я знаю, что могу установить свойство тайм-аута на очень большое число, но мне интересно, может ли альтернатива просто запускать procs и отключать. Мне не нужна возвращаемая стоимость.

Любые предложения? Меня не интересует оптимизация времени обработки каждого sp здесь, просто пытаясь определить, есть ли опция "установить и забыть".

Здесь содержимое объекта 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))
Теги:
sqlcommand

3 ответа

5
Лучший ответ

Вы можете использовать метод async, например BeginExecuteNonQuery. Тайм-аут для этого игнорируется.

  • 0
    +1 - побей меня на 22 секунды (но без ссылки, так кто же на самом деле победил? :-))
  • 0
    хорошо, чтобы быть справедливым, я прочитал ту страницу, чтобы проверить свой ответ. :)
Показать ещё 1 комментарий
4

Использовать асинхронный вызов метода BeginExecuteNonQuery. Из страница MSDN

Свойство CommandTimeout будет игнорироваться во время асинхронных вызовов методов, таких как BeginExecuteReader.

0

Вы можете запустить этот код из фонового потока. Вы можете заглянуть в объект BackgroundWorker.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню