Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Асинхронно извикване на съхранена процедура на SQL Server в C#

Във вашия SqlCommand можете да изпълнявате команди асинхронно с помощта на BeginExecuteNonQuery и EndExecuteNonQuery . Последният ще блокира, докато не приключи. Това обаче няма да докладва напредъка от сървъра относно това как върви архивирането - бих използвал лента за напредъка в маркировка.

За да избегнете EndExecuteNonQuery от блокиране на потребителския ви интерфейс (в зависимост от това как се справяте с него), ще ви трябва фонова нишка. Ако използвате това, можете също така да не използвате BeginXXX EndXXX методи и го правете синхронно във фонова нишка - BackgroundWorker е най-доброто за това.

За да избегнете използването на фонова нишка в потребителския интерфейс, вместо блокиране на EndXXX ще трябва да регистрирате обратно извикване и да обработите произтичащото събитие (извикване на EndXXX в този манипулатор на събития, но ще се върне веднага).

Актуализация: според коментар, за асинхронни извиквания в SQL командите/нещата за връзка, трябва да посочите толкова много в низа за връзка:

http://www.connectionstrings.com/sql-server-2008

Server=myServerAddress; Database=myDataBase; Integrated Security=True; Asynchronous Processing=True;

Или в код с помощта на конструктора на низове за връзка:

builder.AsynchronousProcessing = true;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изравняване/сливане на припокриващи се интервали от време

  2. Как да намерите полета, съдържащи знака TAB в SQL Server

  3. Преобразувайте „datetime2“ в „date“ в SQL Server (T-SQL примери)

  4. Компресиране на специфичен дял в таблица в SQL Server (T-SQL)

  5. Безплатни методи за поправяне на повреда в индекса на SQL Server