Podwyższanie poziomu transakcji
Dotyczy:programu SQL Server
promocji transakcji opisuje uproszczoną, lokalną transakcję, która może być automatycznie promowana do w pełni dystrybucyjnej transakcji zgodnie z potrzebami. Gdy zarządzana procedura składowana jest wywoływana w ramach transakcji bazy danych na serwerze, kod środowiska uruchomieniowego języka wspólnego (CLR) jest uruchamiany w kontekście transakcji lokalnej. Jeśli otworzysz połączenie z serwerem zdalnym w ramach transakcji bazy danych, połączenie z serwerem zdalnym zostanie wymienione do transakcji rozproszonej, a transakcja lokalna jest automatycznie promowana do transakcji rozproszonej.
W związku z tym podwyższenie poziomu transakcji minimalizuje obciążenie transakcji rozproszonych przez odroczenie tworzenia transakcji rozproszonej, dopóki nie będzie potrzebne. Podwyższenie poziomu transakcji jest automatyczne, jeśli zostało włączone przy użyciu słowa kluczowego Enlist
i nie wymaga interwencji od dewelopera. Dostawca danych programu .NET Framework dla programu SQL Server zapewnia obsługę podwyższania poziomu transakcji za pośrednictwem klas w przestrzeni nazw programu .NET Framework System.Data.SqlClient
.
Słowo kluczowe Enlist
Właściwość ConnectionString
obiektu SqlConnection
obsługuje słowo kluczowe Enlist
, które wskazuje, czy System.Data.SqlClient
wykrywa konteksty transakcyjne i automatycznie zapisuje połączenie w transakcji rozproszonej. Jeśli to słowo kluczowe ma wartość true (wartość domyślna), połączenie jest automatycznie wyświetlane w bieżącym kontekście transakcji wątku otwierającego. Jeśli to słowo kluczowe ma wartość false, połączenie SqlClient
nie wchodzi w interakcję z transakcją rozproszoną. Jeśli Enlist
nie zostanie określona w parametrach połączenia, połączenie zostanie automatycznie umieszczone w transakcji rozproszonej, jeśli zostanie wykryte w momencie otwarcia połączenia.
Transakcje rozproszone
Transakcje rozproszone zwykle zużywają znaczne zasoby systemowe. Program Microsoft Distributed Transaction Coordinator (MS DTC) zarządza takimi transakcjami i integruje wszystkich menedżerów zasobów, do których uzyskuje dostęp w tych transakcjach. Z drugiej strony promocja transakcji jest specjalną formą transakcji System.Transactions
, która skutecznie deleguje pracę do prostej transakcji programu SQL Server.
System.Transactions
, System.Data.SqlClient
i sql Server koordynować pracę związaną z obsługą transakcji, promując ją do pełnej transakcji rozproszonej zgodnie z potrzebami.
Zaletą korzystania z promocji transakcji jest to, że po otwarciu połączenia z aktywną transakcją TransactionScope
, a żadne inne połączenia nie są otwarte, transakcje są zatwierdzane jako uproszczona transakcja, a nie naliczenie dodatkowych kosztów na pełną transakcję rozproszoną. Aby uzyskać więcej informacji na temat TransactionScope
, zobacz Use System.Transactions.