Udostępnij za pośrednictwem


Dostosowywanie poziom izolacji transakcji

READ COMMITTED is the default isolation level for the Microsoft SQL Server Database Engine.Jeśli aplikacja musi działać na poziomie innym izolacji, można użyć następujących metod, aby zestaw poziom izolacji:

  • Uruchom USTAWIANIE poziom izolacji transakcji instrukcja.

  • Aplikacje ADO.NET, używające System.Data.SqlClient można określić obszar nazw zarządzanych IsolationLevel opcji za pomocą SqlConnection.BeginTransaction Metoda.

  • Aplikacje korzystające z obiektów ADO zestaw Poziomy izolacji autocommit właściwość.

  • Po rozpoczęciu transakcji, mogą wywoływać aplikacje korzystające z OLE DB ITransactionLocal::StartTransaction z isoLevel zestaw poziom izolacji transakcji żądane.Określając poziom izolacji tryb automatycznego zatwierdzania aplikacje korzystające z OLE DB zestaw właściwość DBPROPSET_SESSION DBPROP_SESS_AUTOCOMMITISOLEVELS poziom izolacji transakcji żądane.

  • Aplikacje używające ODBC zestaw atrybut SQL_COPT_SS_TXN_ISOLATION przy użyciu SQLSetConnectAttr.

Aby uzyskać więcej informacji na temat ustawiania poziomów izolacji transakcji zobacz Adjusting Transaction Isolation Levels.

Jeśli określono poziom izolacji, o zachowaniu blokowania wszystkich danych i kwerendy manipulacji (DML) instrukcji języka w SQL Server Sesja działa na tym poziomie izolacji. Poziom izolacji pozostają w mocy, dopóki nie zakończy sesja, lub do czasu, gdy poziom izolacji jest zestaw na inny poziom.

Następujące zestawy przykład SERIALIZABLE poziom izolacji:

USE AdventureWorks
GO
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
GO
BEGIN TRANSACTION;
SELECT EmployeeID
    FROM HumanResources.Employee;
GO

Poziom izolacji można zastąpić dla poszczególnych kwerendy lub instrukcji DML, jeśli to konieczne, określając wskazówkę na poziomie tabela.Określanie wskazówkę poziom tabela nie ma wpływu na inne instrukcje w sesja.Firma Microsoft zaleca, aby było wskazówki do poziom tabela wykorzystać zmienić domyślne zachowanie tylko wtedy, gdy jest to absolutnie konieczne.

The Database Engine might have to acquire locks when reading metadane even when the poziom izolacji is zestaw to a level where share locks are not requested when reading data. Na przykład używany jest poziom Odczyt nieprzydzielonych izolacji transakcji nie nabywa blokad udziału podczas odczytywania danych, ale może przeglądać sometime żądanie blokady podczas odczytywania katalogu systemu.Oznacza to, może się zdarzyć, że odczytu transakcji nieprzydzielonych spowodować zablokowanie podczas badania tabela podczas jednoczesnych transakcji jest modyfikowania metadane w tej tabela.

Aby określić poziom izolacji transakcji jest aktualnie ustawiona, użyj DBCC USEROPTIONS Instrukcja, jak pokazano w poniższym przykładzie. Zestaw wyników mogą się różnić od zestaw wyników w systemie.

USE AdventureWorks;
GO
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
GO
DBCC USEROPTIONS;
GO

Here is the result set.

Set Option                   Value                                       
---------------------------- ------------------------------------------- 
textsize                     2147483647
language                     us_english
dateformat                   mdy
datefirst                    7
...                          ...
Isolation level              repeatable read

(14 row(s) affected)

DBCC execution completed. If DBCC printed error messages, contact your system administrator.