2009-11-03 23 views
5

Sé que el NIVEL DE AISLAMIENTO DE TRANSACCIÓN predeterminado en SQL Server es "de lectura comprometida". Si deseo cambiarlo a "LEER SIN COMPROMISO", ¿cómo puedo cambiar esta configuración?¿Cómo puedo cambiar el NIVEL DE AISLAMIENTO DE TRANSACCIÓN predeterminado en SQL Server 2005?

nota: No puedo usar SET TRANSACTION ISOLATION LEVEL, que solo se aplica en la sesión actual. No puedo agregar NOLOCK en las consultas porque hay miles de consultas involucradas.

Gracias


, gracias por su respuesta. Estamos bien con la lectura de filas sucias. La actualización no es un problema en nuestro caso también. pero, realmente quiero cambiar esta configuración predeterminada de nivel de aislamiento. Por favor amablemente ayuda.

No puedo "ESTABLECER NIVEL DE AISLAMIENTO DE TRANSACCIÓN LEÍDO SIN COMPROMISO". Debo hacer el cambio global.


Hemos revisado cuidadosamente ambos niveles de aislamiento de instantáneas. No pueden ser utilizados en nuestra situación.

+0

Estoy muy curioso en cuanto a cuál es el problema específico que se está ejecutando en donde leer no comprometidos es sin embargo ser la única solución? Estoy asumiendo algún tipo de contención de bloqueo, pero hay muchas maneras de resolver esos problemas. –

+0

Me encontré con esto buscando saber si es posible, porque me pregunto si alguien nos habrá hecho esto. ¿Alguien sabe? – Joshua

Respuesta

1

What about:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 

sólo se aplicará a la transacción actual.

+0

Esto se aplicará no solo a la transacción actual, sino a la duración de la conexión. Consulte http://msdn.microsoft.com/en-us/library/ms173763(v=SQL.90).aspx para referencia. –

3

Realmente no creo que deba establecer eso a nivel mundial. Usted debe estar fijándose esta bastante cuidado porque se puede terminar con una gran cantidad de problemas diferentes:

  • actualizaciones perdidas
  • no repetible lecturas
  • lecturas sucias
  • fantasma lee

Hay no es una forma de configurar esto en una base de datos o en un nivel de servidor; solo se puede establecer en un nivel de conexión.

Lo mejor que puede hacer a nivel de base de datos es establecer las propiedades ALLOW_SNAPSHOT_ISOLATION o READ_COMMITTED_SNAPSHOT. Lee más aquí:

http://msdn.microsoft.com/en-us/library/tcbchxcb%28VS.80%29.aspx

Cuestiones relacionadas