Verwalten eines Netzwerkfehlers während einer transaktionalen SqlBulkCopy

ado.net c# sql sqlbulkcopy

Frage

Ich untersuche SqlBulkCopy von SqlClient in ADO.Net und habe folgende Fragen.

Was passiert, wenn während eines SqlBulkCopy- Vorgangs ein Netzwerkfehler aufgetreten ist, der als Teil einer Transaktion über eine große Anzahl von Datensätzen ausgeführt wird?

Wird die Transaktion auf dem Server offen bleiben (weder festgeschrieben noch zurückgesetzt), bis wir sie manuell beenden?

Was ist der beste Ansatz zum Senden einer großen Anzahl von Datensätzen in zwei DataTables (InvoiceHeader, InvoiceDetails) in einem DataSet an die entsprechenden SQL Server-Tabellen (InvoiceHeader, InvoiceDetails)?

Vielen Dank.

BEARBEITEN:

Ein paar Details wollte ich hinzufügen, aber vergessen:

Dies ist für .Net v3.5; Ich verwende Enterprise Library für alle Datenbankinteraktionen.

Akzeptierte Antwort

Unter der Annahme, dass Sie ein TransactionScope verwenden, verstehen wir, dass die Transaktion nicht offen bleibt, da SQL Server die Umgebungstransaktion erkennt und automatisch einloggt. Dies bedeutet, dass der schlimmste Fall darin besteht, dass die Transaktion ausläuft und sich zurückzieht. Sie können die Transaktionsbindung ändern , um festzulegen, was bei einem Timeout zu tun ist (wahrscheinlich möchten Sie eine explizite Bindung).



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum