Gestionando una falla de red durante una Transactional SqlBulkCopy

ado.net c# sql sqlbulkcopy

Pregunta

Estoy investigando la SqlBulkCopy de SqlClient en ADO.Net y tengo las siguientes preguntas.

¿Qué ocurrirá si se produjo un error en la red durante una operación de SqlBulkCopy , que se ejecuta como parte de una transacción en un gran número de registros?

¿La transacción se dejará abierta (ni se confirmará ni se retrotraerá) en el servidor hasta que la eliminemos manualmente?

¿Cuál es el mejor método para enviar una gran cantidad de registros en dos DataTables (InvoiceHeader, InvoiceDetails) en un DataSet a las respectivas tablas de SQL Server (InvoiceHeader, InvoiceDetails)?

Gracias.

EDITAR:

Algunos detalles que quería agregar, pero olvidé:

Esto es para .Net v3.5; Estoy usando Enterprise Library para todas las interacciones de la base de datos.

Respuesta aceptada

Suponiendo que está utilizando un TransactionScope, mi entendimiento es que no , la transacción no se dejará abierta, porque SQL Server detectará la transacción ambiental y se enlistará automáticamente. Esto significa que el peor de los casos es que la transacción se agote, retrocediendo. Puede cambiar el enlace de transacción para especificar qué hacer en el caso de un tiempo de espera (es probable que desee unir explícitamente).



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué