Ricerca…


introduzione

Nei sistemi di database, l'isolamento determina in che modo l'integrità della transazione è visibile ad altri utenti e sistemi, quindi definisce come / quando le modifiche apportate da una operazione diventano visibili ad altre. La lettura fantasma può verificarsi quando si ricevono dati non ancora commessi nel database.

Osservazioni

È possibile leggere i vari ISOLATION LEVEL su MSDN

Livello di isolamento LEGGI NON CORRETTO

Creare una tabella di esempio su un database di esempio

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]

Ora apri un primo editor di query (sul database) inserisci il codice sottostante ed esegui ( non toccare il --rollback ) in questo caso inserisci una riga su DB ma non commetti modifiche.

begin tran

INSERT INTO Table_1 values('Title 1')

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

--rollback

Ora apri un Second Query Editor (sul database), inserisci il codice qui sotto ed esegui

begin tran

set transaction isolation level READ UNCOMMITTED

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

Si può notare che sul secondo editor è possibile visualizzare la riga appena creata (ma non impegnata) dalla prima transazione. Al primo editor eseguire il rollback (selezionare la parola rollback ed eseguire).

-- Rollback the first transaction
rollback

Esegui la query sul secondo editor e vedi che il record scompare (lettura fantasma), questo si verifica perché dici, alla seconda transazione per ottenere tutte le righe, anche i non inviati.

Ciò si verifica quando si modifica il livello di isolamento con

set transaction isolation level READ UNCOMMITTED


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow