2009-07-13 10 views

Répondre

4

Cela dépend de la façon dont vous l'émettez. Si vous avez juste une chaîne sql avec l'expression "BULK INSERT" et exécutez cette chaîne en utilisant les fonctions normales (de blocage), alors non, ce n'est pas asynchrone. Si vous le souhaitez, vous pouvez utiliser une paire de fonctions comme BeginExecuteNonQuery()/EndExecuteNonQuery() plutôt que simplement ExecuteNonQuery().

Il existe également une classe SqlBulkCopy que vous pouvez utiliser. Enfin, j'utiliserai mes pouvoirs de débogage psychique sur le texte de votre question pour en déduire que vous avez vraiment un problème avec un fichier verrouillé. Pouvez-vous partager le code que vous utilisez pour lire ce fichier?

1

Je suppose que non, étant donné que la commande BULK INSERT est comme n'importe quelle autre, l'appel à Execute bloquera jusqu'à ce que le serveur dise que c'est fait. Autant que je sache, aucune commande n'est asynchrone dans SQL Server. À moins que vous n'utilisiez l'une des méthodes async sur SqlCommand, je ne vois pas comment le BULK INSERT serait exécuté async.

Je suppose également que lorsque la commande renvoie, tous les verrous que SQL Server avait sur le fichier ont été libérés.

Cela n'a aucun sens autrement, pourquoi serait-il tenir les verrous, ou ne pas être asynchrone, d'ailleurs?

Questions connexes