Supongamos que un procedimiento almacenado en el servidor MSSQL usa una transacción SQL usando BEGIN TRANSACTION/COMMIT TRANSACTION
, ¿cómo difiere eso de comenzar y comprometer uno usando ADO.NET a través del SqlConnection.BeginTransaction()
?¿Cuál es la diferencia entre una transacción SQL en el nivel de procedimiento almacenado y una en el nivel SqlConnection?
Respuesta
Para ADO.NET, no hay ninguna diferencia. Se establece implícitamente en MSDN donde para el objeto SqlTransaction se dice que el método Commit "falla si la transacción ya se ha retrotraído al servidor".
Además, SQL Server Profiler muestra "SET TRANSACTION ISOLATION LEVEL READ COMMITTED; BEGIN TRAN" tan pronto como ejecute .BeginTransaction en una conexión.
Para ADO (no .NET), sin embargo, no lo es. Eso solía permitir buenos escenarios con, de hecho, las transacciones anidadas (el servidor trans se anidaba dentro de las del cliente). A pesar de que lo he usado mucho, no puedo definir exactamente qué era una "transacción de cliente" en ese caso.
Si va a llamar a múltiples procesos almacenados en una fila y desea poder deshacer, entonces tiene que administrar la transacción desde su código utilizando SqlConnection.BeginTransaction(). De lo contrario, es lo mismo.
- 1. ¿Cuál es la diferencia entre dévil en el nivel de miembro y estático en el nivel de procedimiento?
- 2. Nivel de aislamiento en Sql Transacción
- 3. ¿Cuál es la diferencia entre; y GO en procedimiento almacenado en SQL Server?
- 4. Servidor SQL: ¿cómo establecer el nivel de aislamiento predeterminado para todo el procedimiento almacenado?
- 5. Diferencia entre el registrador y el nivel raíz en log4Net?
- 6. ¿Cuál es la diferencia entre el panel raíz y el contenedor de nivel superior, en Swing?
- 7. ¿Es posible crear un procedimiento almacenado global en el nivel de servidor Sql
- 8. ¿Cuál es la diferencia entre un procedimiento almacenado y una vista?
- 9. ¿Cuál es la diferencia entre JTA y una transacción local?
- 10. Suprimir transacción en procedimiento almacenado
- 11. SQL Server: transacción de procedimiento almacenado
- 12. Transacción de procedimiento almacenado
- 13. ¿Cómo encontrar el nivel de transacción actual?
- 14. ¿Cuál es la diferencia entre el procedimiento y el procedimiento # 'en Lisp/Clojure?
- 15. ¿Cuál es el nivel de aislamiento de transacción predeterminado para SQL Server con ADO.NET?
- 16. ¿Dónde debo realizar una transacción: en el Procedimiento almacenado o en el código de la aplicación llamante?
- 17. ¿Retirar una llamada de procedimiento almacenado desde el interior de una transacción utilizando LINQ-to-SQL?
- 18. ¿Cuál es la diferencia entre WebRTC y WebSockets para la comunicación de datos de bajo nivel
- 19. Nivel de transacción, nolock/readpast y concurrencia
- 20. Procedimiento de diferencia y sincronización a nivel de tabla para T-SQL
- 21. ¿Alguien puede explicarme la diferencia entre el controlador de nivel de clase y el controlador de nivel de método ...?
- 22. Cuál es la diferencia entre la llamada a procedimiento remoto y el servicio web
- 23. agregando una columna en el procedimiento almacenado
- 24. Grails: ¿Cuál es la diferencia entre una sesión no eliminada y una transacción retrotraída?
- 25. Diferencia entre transacción y TransactionScope
- 26. ¿Cuál es la diferencia formal entre un lenguaje de nivel funcional y uno funcional?
- 27. ¿Cuál es la diferencia entre tran y transacción en SQL Server 2005
- 28. Limitaciones de nivel de columna frente a nivel de tabla en el servidor sql?
- 29. Quiero saber la diferencia entre las funciones de nivel bajo y las funciones de nivel superior
- 30. ¿Cuál es el nivel de aislamiento predeterminado de ADO.NET?