2009-07-13 12 views

Antwort

4

Es hängt davon ab, wie Sie es ausgeben. Wenn Sie nur eine SQL-Zeichenfolge mit dem Ausdruck "BULK INSERT" haben und diese Zeichenfolge mit den normalen (blockierenden) Funktionen ausführen, dann ist es nicht asynchron. Wenn Sie möchten, können Sie ein Funktionspaar wie BeginExecuteNonQuery()/EndExecuteNonQuery() statt nur ExecuteNonQuery() verwenden.

Es gibt auch eine SqlBulkCopy Klasse, die Sie verwenden können. Es läuft auch synchron (der Anruf an WriteToServer() wird blockiert.)

Schließlich werde ich meine psychischen Debugging-Kräfte auf Ihre Fragetext zu folgern, dass, was Sie wirklich mit einem Problem mit einer gesperrten Datei zu tun haben. Können Sie den Code teilen, den Sie zum Lesen der Datei verwenden?

1

Ich würde raten, nein, da der Befehl BULK INSERT wie jeder andere ist, wird der Aufruf von Execute blockiert, bis der Server sagt, dass es fertig ist.

AFAIK, gibt es keinen Befehl, der in SQL Server asynchron ist. Wenn Sie nicht eine der asynchronen Methoden im SqlCommand verwenden, kann ich nicht sehen, wie der BULK INSERT async ausgeführt wird.

Ich würde auch davon ausgehen, dass, wenn der Befehl zurückgibt, dass alle Sperren, die SQL Server in der Datei hatte, freigegeben wurden.

Es macht sonst keinen Sinn, warum würde es die Sperren halten oder nicht asynchron sein?

Verwandte Themen