SPRZEDAŻ: 1-800-867-1389

USTAWIĆ poziom izolacji transakcji (języka Transact-SQL)

Kontroluje zachowanie wersji blokowania i wiersz z Transact-SQLinstrukcje wydane przez połączenie z SQL Server.

Ikona łącza do tematu Konwencje składni języka Transact-SQL


SET TRANSACTION ISOLATION LEVEL
    { READ UNCOMMITTED
    | READ COMMITTED
    | REPEATABLE READ
    | SNAPSHOT
    | SERIALIZABLE
    }
[ ; ]

ODCZYT NIEPRZEKAZANY

Określa, że instrukcje można odczytać wiersze, które zostały zmodyfikowane przez inne transakcje, ale nie zostały jeszcze zatwierdzone.

Transakcje z systemem na poziomie odczyt NIEPRZEKAZANY nie wydają blokady współużytkowane, aby zapobiec innymi transakcjami z modyfikując dane odczytane przez bieżącej transakcji. Również ODCZYTAĆ NIEZAKOŃCZONE transakcje nie są blokowane przez wyłącznych blokad, które uniemożliwiłyby bieżącej transakcji odczytywanie wiersze, które zostały zmodyfikowane, ale nie popełnionych przez innych transakcji. Gdy opcja ta jest ustawiona, istnieje możliwość Odczyt nieprzekazany modyfikacji, które są nazywane odczyt niezatwierdzonych danych. Wartości w danych można zmienić i wiersze można pojawiają się lub znikanie w zestawie danych przed zakończeniem transakcji. Ta opcja ma ten sam wynik, jak ustawienie NOLOCK na wszystkie tabele do wszystkich instrukcji SELECT, w ramach transakcji. Jest to najmniej restrykcyjny poziom izolacji.

W SQL Server, można również zminimalizować blokowania rywalizacja chroniąc transakcji z dirty odczytuje dane nieprzekazane zmiany za pomocą:

  • On ustawiony poziom izolacji ODCZYTAĆ popełnione, z opcją bazy danych READ_COMMITTED_SNAPSHOT.

  • Poziom izolacji SNAPSHOT.

PRZECZYTAJ POPEŁNIONE

Określa, że deklaracje nie można odczytać danych, która została zmodyfikowana, ale nie popełnionych przez inne transakcje. Zapobiega to odczyt niezatwierdzonych danych. Dane mogą być zmieniane przez inne transakcje między poszczególnych sprawozdań w ramach bieżącej transakcji, odczyty nonrepeatable lub fantomu danych. Ta opcja jest SQL Serverdomyślną.

Zachowanie ODCZYTAĆ popełnione zależy od ustawień opcji bazy danych READ_COMMITTED_SNAPSHOT:

  • Jeśli READ_COMMITTED_SNAPSHOT jest ustawiony na wyłączone (domyślnie), Aparat baz danychużywa współużytkowane blokady, aby zapobiec innymi transakcjami od modyfikowania wierszy, gdy bieżąca transakcja jest uruchomiony operacji odczytu. Blokady współużytkowane także zablokować instrukcji odczytywanie wierszy zmodyfikowane przez inne transakcje, do czasu zakończenia innych transakcji. Typ blokadę określa, kiedy będą zwalniane. Wiersz blokady są uwalniane przed przetworzeniem następnego wiersza. Blokady strony zostanie zwolnione, gdy następna strona jest odczytywany i blokady tabeli są zwalniane po zakończeniu instrukcji.

    Uwaga Uwaga:

    Jeśli READ_COMMITTED_SNAPSHOT jest ustawiona na ON, Aparat baz danychużywa wierszy wersji do przedstawienia każdego sprawozdania z migawkę transakcyjnie spójne dane jako istniała od początku oświadczenie. Blokady nie są używane do ochrony danych z aktualizacji przez równoległe transakcje.

    Migawka izolacji obsługuje dane FILESTREAM. W trybie izolacji migawka FILESTREAM dane odczytane przez wszelkie oświadczenia w transakcji będzie transakcyjnie zgodna wersja dane, które istniały na początku transakcji.

Gdy opcja bazy danych READ_COMMITTED_SNAPSHOT ma wartość ON, można użyć wskazówki tabeli READCOMMITTEDLOCK żądania, udostępnionych blokowania zamiast wersji wiersza dla poszczególnych sprawozdań w transakcjach uruchomione na poziomie izolacji ODCZYTAĆ popełnione.

Uwaga Uwaga:

Po ustawieniu opcji READ_COMMITTED_SNAPSHOT tylko połączenie wykonywanie polecenia ALTER DATABASE jest dozwolone w bazie danych. Musi istnieć nie inne otwarte połączenie w bazie danych, aż do zakończenia ALTER DATABASE. Baza danych musi być w trybie pojedynczego użytkownika.

ODCZYT POWTARZALNY

Określa, że sprawozdania nie można odczytać danych, która została zmodyfikowana, ale nie zostały jeszcze zatwierdzone przez inne transakcje i że żadne inne transakcje można zmodyfikować danych, która została przeczytana przez bieżącej transakcji aż ukończy bieżącej transakcji.

Blokady współużytkowane są umieszczane na wszystkie dane odczytane przez każdej instrukcji w transakcji i są przechowywane aż do jej zakończenia. Zapobiega to inne transakcje od modyfikowania wierszy, czytanych przez bieżącej transakcji. Inne transakcje można wstawiać nowe wiersze, które spełniają określone warunki wyszukiwania sprawozdania wydanego przez bieżącej transakcji. Jeśli bieżąca transakcja następnie ponownych prób oświadczenie będzie pobierał nowych wierszy, która skutkuje fantomu odczytów. Ponieważ blokady współużytkowane są przechowywane do końca transakcji zamiast wydano na końcu każdej instrukcji, współbieżności jest niższy niż poziom izolacji ODCZYTAĆ popełnione domyślne. Użyj tej opcji tylko wtedy, gdy jest to konieczne.

MIGAWKA

Określa, że dane odczytane przez wszelkie oświadczenia w transakcji będzie transakcyjnie zgodna wersja dane, które istniały na początku transakcji. Transakcja rozpoznać tylko zmiany danych, które zostały popełnione przed rozpoczęciem transakcji. Dane zmiany dokonane przez inne transakcje po rozpoczęciu bieżącej transakcji nie są widoczne dla instrukcji w bieżącej transakcji. Efekt jest, jak w przypadku sprawozdań w ramach transakcji uzyskać migawkę danych popełnione jako istniała od początku transakcji.

Z wyjątkiem przypadków, gdy baza danych jest odzyskiwana transakcji SNAPSHOT nie żądania blokady podczas odczytywania danych. MIGAWKA transakcji odczytywania danych nie blokować inne transakcje z zapisu danych. Transakcje zapisuje dane nie blokować transakcji SNAPSHOT odczytywanie danych.

W fazie roll-back odzyskiwania bazy danych transakcji SNAPSHOT będzie żądania blokady, jeśli próby odczytu danych, który jest zablokowany przez innego transakcję, która jest Trwa wycofywanie. Transakcji SNAPSHOT jest blokowany aż do, że transakcja została wycofana. Blokada jest zwalniana, niezwłocznie po została mu przyznana.

Opcja bazy danych ALLOW_SNAPSHOT_ISOLATION należy nadać ON, zanim będzie można rozpocząć transakcji, która wykorzystuje poziom izolacji MIGAWKI. Jeśli w transakcji za pomocą poziom izolacji SNAPSHOT uzyskuje dostęp do danych w wielu baz danych, ALLOW_SNAPSHOT_ISOLATION należy ustalić on w każdej bazie danych.

Transakcji nie można ustawić poziom izolacji MIGAWKA, który uruchomił z innym poziom izolacji; Zaawansowana tak spowoduje przerwanie transakcji. Jeśli transakcja zostanie uruchomiony poziomu izolacji MIGAWKI, można go zmienić na inny poziom izolacji, a następnie z powrotem do MIGAWKI. Transakcja zostanie uruchomiony po raz pierwszy uzyskuje dostęp do danych.

Transakcji działa na poziom izolacji MIGAWKĘ można przeglądać zmiany wprowadzone przez tę transakcję. Na przykład jeśli transakcji wykonuje uaktualnienie w tabeli, a następnie wystawia instrukcja SELECT przeciwko tej samej tabeli, zmodyfikowane dane zostaną uwzględnione w zestawie wyników.

Uwaga Uwaga:

W trybie izolacji migawka FILESTREAM dane odczytane przez wszelkie oświadczenia w transakcji będzie transakcyjnie zgodna wersja dane, które istniały na początku transakcji, nie na początku instrukcji.

SERIALIZABLE

Określa, co następuje:

  • Instrukcje nie można odczytać danych, która została zmodyfikowana, ale nie zostały jeszcze zatwierdzone przez innych transakcji.

  • Żadne inne transakcje można zmodyfikować danych, która została przeczytana przez bieżącej transakcji aż ukończy bieżącej transakcji.

  • Innych transakcji nie można wstawić nowe wiersze z wartości klucza, które podlegałyby w zakresie odczytywanie przez wszelkie oświadczenia w bieżącej transakcji, dopóki nie zakończy bieżącej transakcji.

Zakres blokady są umieszczane w zakres wartości klucza, spełniające warunki wyszukiwania każda instrukcja wykonywana w ramach transakcji. Blokuje innych transakcji z aktualizacji lub wstawianie wierszy, które kwalifikowałyby się dla każdego z instrukcje wykonywane przez bieżącej transakcji. Oznacza to, że jeśli żadnych instrukcji w transakcji są wykonywane po raz drugi, one odczyta ten sam zestaw wierszy. Blokady zakresu są przechowywane aż do jej zakończenia. Jest to najbardziej restrykcyjne poziomów izolacji, ponieważ blokuje cały zakresy kluczy i przechowuje blokad, aż do jej zakończenia. Ponieważ współbieżności jest niższa, użyj tej opcji tylko wtedy, gdy jest to konieczne. Ta opcja ma ten sam wynik, jak ustawienie HOLDLOCK na wszystkie tabele do wszystkich instrukcji SELECT, w ramach transakcji.

Tylko jedną z opcji poziomu izolacji można ustawić w czasie, i pozostaje ona dla tego połączenia, dopóki nie zostanie jednoznacznie zmieniony. Odczytać wszystkie, operacji wykonywanych w ramach transakcji działają na podstawie zasady na poziomie określonym izolacji chyba że wskazówka tabeli w klauzuli FROM instrukcji określa różne blokowania lub zachowanie wersji dla tabeli.

Poziomów izolacji transakcji określenie typu blokady nabyty operacji odczytu. Współużytkowane blokady nabyte popełnione odczytu lub odczyt POWTARZALNY są ogólnie wiersz blokad, chociaż blokad wiersza można przekazany do strony lub tabeli blokad jeśli znaczna liczba wierszy w tabeli lub Strona odwołuje się odczyt. Jeśli wiersz zostanie zmodyfikowany przez transakcji po została przeczytana, transakcja uzyskuje blokadę wyłączności w celu ochrony tego wiersza, a blokada wyłączna jest zachowane aż do jej zakończenia. Na przykład jeśli transakcja POWTARZALNYCH odczytu ma blokadę w wierszu, a transakcja następnie modyfikuje wiersz, blokady udostępnionego wiersz jest konwertowany na blokadę wyłączności wiersza.

Z wyjątkiem jednego można przełączyć się z jednego poziomu izolacji do innego w dowolnym momencie podczas transakcji. Wyjątek występuje wtedy, gdy zmiana z dowolnego poziomu izolacji SNAPSHOT izolacji. W ten sposób powoduje, że transakcje mogą zakończyć się niepowodzeniem i przywracać. Jednakże można zmienić rozpoczął w izolacji MIGAWKĘ na inny poziom izolacji transakcji.

Kiedy można zmienić transakcji z jednego poziomu izolacji do innego, zasoby, które są odczytywane po zmianie są chronione zgodnie z zasadami nowy poziom. Zasoby, odczytujących przed zmianą w dalszym ciągu być chronione zgodnie z przepisami poprzedniego poziomu. Na przykład zmianie transakcji z odczytu ZOBOWIĄZAŁA się SERIALIZABLE blokady współużytkowane nabytych po zmianie są teraz przechowywane aż do zakończenia transakcji.

Wydawanie Ustaw poziom izolacji transakcji w procedurze przechowywanej lub wyzwalacz, gdy obiekt sterowanie poziom izolacji powoduje zresetowanie do poziomu w efekcie gdy obiekt został wywołany. Na przykład jeśli ustawiona odczyt POWTARZALNY w partii i partii, której następnie wywołuje procedurę przechowywaną, która ustawia poziom izolacji SERIALIZABLE ustawienie poziomu izolacji przywraca odczyt POWTARZALNY jeżeli procedura składowana zwraca sterowanie do partii.

Uwaga Uwaga:

Funkcje zdefiniowane przez użytkownika i wspólnego języka runtime (CLR) typy zdefiniowane przez użytkownika nie można wykonać Ustaw poziom izolacji transakcji. Jednakże można zastąpić na poziomie izolacji przy użyciu wskazówkę tabeli. Aby uzyskać więcej informacji, zobacz Wskazówki tabeli (język Transact-SQL).

Kiedy używasz sp_bindsessionpowiązać dwie sesje, każdej sesji zachowuje jej ustawienie poziomu izolacji. Zmień ustawienie poziomu izolacji jednej sesji za pomocą ustawić poziom izolacji transakcji nie wpływa na ustawienia innych sesji związane.

Ustaw poziom izolacji transakcji staje się skuteczne wykonywanie lub czas, a nie w czasie analizy.

Masowych zoptymalizowane obciążenia operacji kwerend bloku stert, które są uruchomione w następujących poziomów izolacji:

  • MIGAWKA

  • ODCZYT NIEPRZEKAZANY

  • Przeczytaj POPEŁNIONYCH przy użyciu wersji wiersza

Odwrotnie kwerend, które są uruchamiane w ramach tych poziomów izolacji zablokować masowych zoptymalizowane obciążenia operacji na stert. Aby uzyskać więcej informacji dotyczących zbiorczej obciążenia operacji, zobacz Luzem, importowanie i eksportowanie danych (program SQL Server).

Włączone FILESTREAM bazy danych obsługują następujące poziomy izolacji transakcji.

Poziom izolacji

Języka Transact SQL dostępu

Dostęp do systemu plików

Odczyt nieprzekazany

SQL Server 2012

Nieobsługiwana

Odczyt popełnione

SQL Server 2012

SQL Server 2012

Odczyt powtarzalny

SQL Server 2012

Nieobsługiwana

Searializable

SQL Server 2012

Nieobsługiwana

Odczyt popełnione migawki

SQL Server 2012

SQL Server 2012

Migawka

SQL Server 2012

SQL Server 2012

W następującym przykładzie ustawiana TRANSACTION ISOLATION LEVELsesji. Dla każdego Transact-SQLoświadczenie, że następuje, SQL Serverposiada wszystkie blokady współużytkowane do końca transakcja.

USE AdventureWorks2012;
GO
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
GO
BEGIN TRANSACTION;
GO
SELECT * 
    FROM HumanResources.EmployeePayHistory;
GO
SELECT * 
    FROM HumanResources.Department;
GO
COMMIT TRANSACTION;
GO
USE AdventureWorks2012;
GO
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
GO
BEGIN TRANSACTION;
GO
SELECT * 
    FROM HumanResources.EmployeePayHistory;
GO
SELECT * 
    FROM HumanResources.Department;
GO
COMMIT TRANSACTION;
GO
Czy oceniasz te materiały jako pomocne?
(Pozostało znaków: 1500)
Dziękujemy za opinię.

Zawartość społeczności

Pokaż:
© 2014 Microsoft