Buscar..


Introducción

En los sistemas de bases de datos, el aislamiento determina cómo la integridad de la transacción es visible para otros usuarios y sistemas, por lo que define cómo / cuándo los cambios realizados por una operación se vuelven visibles por otros. La lectura fantasma puede ocurrir cuando obtiene datos que aún no están comprometidos con la base de datos.

Observaciones

Puede leer los distintos ISOLATION LEVEL en MSDN

Nivel de aislamiento LEER SIN COMPROMISO

Crear una tabla de muestra en una base de datos de muestra

CREATE TABLE [dbo].[Table_1](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [title] [varchar](50) NULL,
 CONSTRAINT [PK_Table_1] PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

Ahora abra un Editor de primera consulta (en la base de datos) inserte el código a continuación y ejecute ( no toque el --rollback ) en este caso, inserte una fila en la base de datos pero no confirme los cambios.

begin tran

INSERT INTO Table_1 values('Title 1')

SELECT * FROM [Test].[dbo].[Table_1]

--rollback

Ahora abra un Segundo Editor de consultas (en la base de datos), inserte el código a continuación y ejecute

begin tran

set transaction isolation level READ UNCOMMITTED

SELECT * FROM [Test].[dbo].[Table_1]

Puede observar que en el segundo editor puede ver la fila recién creada (pero no confirmada) de la primera transacción. En el primer editor, ejecute el rollback (seleccione la palabra rollback y ejecute).

-- Rollback the first transaction
rollback

Ejecute la consulta en el segundo editor y verá que el registro desaparece (lectura fantasma), esto ocurre porque le dice a la segunda transacción que obtenga todas las filas, también las no confirmadas.

Esto ocurre cuando cambias el nivel de aislamiento con

set transaction isolation level READ UNCOMMITTED


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow