Sök…


Introduktion

I databasesystem avgör isolering hur transaktionsintegriteten är synlig för andra användare och system, så den definierar hur / när ändringarna som görs av en operation blir synliga för andra. Fantomläsningen kan inträffa när du får data som ännu inte har överförts till databasen.

Anmärkningar

Du kan läsa de olika ISOLATION LEVELMSDN

Isoleringsnivå LÄS OBESKRIVAD

Skapa en provtabell i en exempeldatabas

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]

Öppna nu en första frågeställningsredigerare (i databasen) infoga koden nedan och kör ( rör inte vid - rollback ) i det här fallet sätter du in en rad på DB men gör inga ändringar.

begin tran

INSERT INTO Table_1 values('Title 1')

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

--rollback

Öppna nu en andra frågeställare (i databasen), sätt in koden nedan och kör

begin tran

set transaction isolation level READ UNCOMMITTED

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

Du kanske märker att du på den andra redigeraren kan se den nyskapade raden (men inte begagnad) från den första transaktionen. På den första redigeraren kör rollback (välj rollback-ordet och kör).

-- Rollback the first transaction
rollback

Kör frågan på den andra redaktören och du ser att posten försvinner (fantomläsning), detta beror på att du berättar till den andra transaktionen att få alla rader, även de icke-återställda.

Detta inträffar när du ändrar isoleringsnivån med

set transaction isolation level READ UNCOMMITTED


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow