खोज…


परिचय

डेटाबेस सिस्टम में, अलगाव यह निर्धारित करता है कि लेन-देन की अखंडता अन्य उपयोगकर्ताओं और प्रणालियों के लिए कैसे दिखाई देती है, इसलिए यह परिभाषित करता है कि एक ऑपरेशन द्वारा किए गए परिवर्तन कैसे / कब दूसरे के लिए दिखाई देते हैं। जब आप डेटा प्राप्त कर रहे होते हैं तो प्रेत रीडिंग डेटाबेस में नहीं आती है।

टिप्पणियों

आप MSDN पर विभिन्न ISOLATION LEVEL पढ़ सकते हैं

अलगाव का स्तर असम्बद्ध किया गया

एक नमूना डेटाबेस पर एक नमूना तालिका बनाएँ

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]

अब एक फर्स्ट क्वेरी एडिटर खोलें (डेटाबेस पर) नीचे दिए गए कोड को डालें, और डीबी पर एक पंक्ति डालने पर निष्पादित करें (- thebackback को न छूएं ) इस स्थिति में बदलाव करें।

begin tran

INSERT INTO Table_1 values('Title 1')

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

--rollback

अब एक दूसरा क्वेरी संपादक खोलें (डेटाबेस पर), नीचे दिए गए कोड को डालें और निष्पादित करें

begin tran

set transaction isolation level READ UNCOMMITTED

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

आप देख सकते हैं कि दूसरे संपादक पर आप पहले लेनदेन से नव निर्मित पंक्ति (लेकिन प्रतिबद्ध नहीं) देख सकते हैं। पहले संपादक रोलबैक निष्पादित करें (रोलबैक शब्द का चयन करें और निष्पादित करें)।

-- Rollback the first transaction
rollback

दूसरे संपादक पर क्वेरी निष्पादित करें और आप देखते हैं कि रिकॉर्ड गायब हो गया (फैंटम रीड), यह इसलिए होता है क्योंकि आप बताते हैं, सभी पंक्तियों को प्राप्त करने के लिए 2 लेन-देन के लिए, भी अनकम्फेड।

यह तब होता है जब आप आइसोलेशन स्तर को बदलते हैं

set transaction isolation level READ UNCOMMITTED


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow