2012-04-03 4 views
40

¿Cuál es el nivel de aislamiento de transacción predeterminado para SQL Server con ADO.NET? Estoy usando una instalación predeterminada de SQL Server y solo las clases normales de System.Data.SqlClient.¿Cuál es el nivel de aislamiento de transacción predeterminado para SQL Server con ADO.NET?

+10

Si baja la votación, explique por qué –

+0

@RemusRusanu: No estoy leyendo los documentos primero, supongo. (No voté negativamente) – Neolisk

+3

@Neolisk: las cosas a menudo son más complejas de lo que parecen ... http://stackoverflow.com/questions/9851415/sql-server-isolation-level-leaks-across-pooled-connections –

Respuesta

51

READ COMMITTED es el nivel de aislamiento predeterminado para el motor de base de datos Microsoft SQL Server.

Fuente:

Aquí es cómo se compara con otros niveles de aislamiento:

La documentación de MSDN para SqlConnection.BeginTransaction() también afirma Read committed

... Para restablecer el nivel de aislamiento en el valor predeterminado (READ comprometido) ...

9

Por defecto, el nivel de aislamiento para TransactionScope es Serializable, que proporciona el más alto nivel de protección.

Consulte a continuación enlace para más información:

+1

Esta respuesta parece más relevante porque se trata de transacciones .NET, no cuando se usa TSQL. –

+2

La pregunta se refiere a ADO NET que ofrece herramientas para el acceso a la base de datos desde el espacio de nombres System.Data (donde, por cierto, el nivel de aislamiento predeterminado se establece en ReadCommitted). Mientras que TransactionScope proviene del espacio de nombres System.Transactions, que ofrece estas herramientas sobre la fuente de datos en general (por ejemplo, servicio web). – Bronek

+3

Acabo de rechazarlo porque cuando en .NET llamas a System.Data.SqlClient.SqlConnection.BeginTransaction() la Transacción resultante tiene nivel de aislamiento ReadCommited, como lo describe hkf. – mischka

Cuestiones relacionadas