Отмена запроса базы данных dillema

Возможно, это вопрос, который задавался много раз, но после многих поисков и чтения я все еще не совсем уверен, что является лучшим подходом.

Проблема проста: некоторые транзакции базы данных в моем приложении длинны (секунды, минуты). Это может быть результатом двух вещей: для одного запроса требуется обработка большого количества данных или выполнение нескольких запросов в серии извлеченных данных. Во многих случаях обе игры находятся в игре. Это зависает от пользовательского интерфейса, и, тем не менее, он не может отменить это.

Решение также кажется простым: переместите эти транзакции в другой поток, а затем уничтожьте этот поток, если это необходимо.

Однако многие люди здесь, в интернете, возражают против убийства потоков. Они предлагают использовать DbCommand.Cancel (), который является безопасным потоком. Но, другие люди говорят, что нет гарантии, что эта команда отменит запрос. Представляется еще более сложная проблема: как может поток пользовательского интерфейса узнать, какой DbCommand выполняется, когда пользователь нажимает? Heck, поток мог обрабатывать данные в памяти в этот момент.

Можете ли вы пролить свет на эту тему?

нет гарантии, что эта команда отменит запрос

Это зависит от поставщика. Некоторые поставщики не поддерживают команды отмены, но SQL Server делает это, поэтому это не должно быть проблемой. Конечно, это также зависит от типа выполняемой команды …

Представляется еще более сложная проблема: как может поток пользовательского интерфейса узнать, какой DbCommand выполняется, когда пользователь нажимает?

DbCommand.Cancel – это метод экземпляра, а не статический метод … поэтому вам нужно сохранить ссылку на исполняемую команду и вызвать отмену этого экземпляра.

  • SQL Server Management Studio - создание базы данных с файлами в определенном месте
  • Вставка данных в запрос в SQL Server
  • как перемещать данные из одной базы данных в другую без пакета SSIS
  • Каковы ограничения для SQL Server Compact? (Или - как выбрать базу данных для использования на платформах MS?)
  • Строка соединения C # Sql
  • Предложение SQL WHERE для сопоставления значений с конечными пробелами
  • sql как выбрать и обновить одновременно
  • Вставка с использованием AddWithValue - вызывает ошибку?
  • Как синхронизировать две базы данных для отключенных систем от разных компаний
  • можно ли узнать, какая часть данных db старше, чем некоторые N лет в SQL Server?
  • Элегантное решение для записи в базу данных, а также карту rfid несколько атомным способом
  • Давайте будем гением компьютера.