sql >> Databáze >  >> RDS >> Sqlserver

Asynchronní volání SQL Server uložené procedury v C#

Ve vašem SqlCommand příkazy můžete spouštět asynchronně pomocí BeginExecuteNonQuery a EndExecuteNonQuery . Ten se zablokuje, dokud nebude hotový. To však nebude hlásit postup ze serveru o tom, jak zálohování probíhá - použil bych pro to pruh průběhu.

Chcete-li se vyhnout EndExecuteNonQuery z blokování vašeho uživatelského rozhraní (v závislosti na tom, jak s ním zacházíte), budete potřebovat vlákno na pozadí. Pokud toto použijete, můžete také nepoužívat BeginXXX EndXXX a provádějte to synchronně ve vláknu na pozadí - BackgroundWorker je pro to nejlepší.

Chcete-li se vyhnout použití vlákna na pozadí v uživatelském rozhraní, místo blokování na EndXXX budete muset zaregistrovat zpětné volání a zpracovat výslednou událost (volání EndXXX v této obsluze události, ale okamžitě se vrátí).

Aktualizace: podle komentáře, pro asynchronní volání do SQL příkazu/připojovacích věcí musíte v připojovacím řetězci uvést tolik:

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

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

Nebo v kódu pomocí nástroje pro tvorbu připojovacích řetězců:

builder.AsynchronousProcessing = true;


  1. Jak v NodeJS uložit objekt JSON jako text s modulem node-postgres?

  2. Kolik hodnot v klauzuli in je příliš mnoho v dotazu SQL?

  3. Jak v Redshift/Postgres počítat řádky, které splňují podmínku?

  4. Divoká a otravná chyba:Volání nedefinované funkce mysql_query()