Zvýšení úrovně transakcí
platí pro:SQL Server
Transakce povýšení popisuje odlehčenou místní transakci, která lze automaticky zvýšit na plně distribuovatelnou transakci podle potřeby. Když je spravovaná uložená procedura vyvolána v rámci databázové transakce na serveru, spustí se kód CLR (Common Language Runtime) v kontextu místní transakce. Pokud otevřete připojení ke vzdálenému serveru v rámci databázové transakce, připojení ke vzdálenému serveru je zařazení do distribuované transakce a místní transakce se automaticky zvýší na distribuovanou transakci.
Zvýšení úrovně transakcí tedy minimalizuje režii distribuovaných transakcí tím, že odloží vytvoření distribuované transakce, dokud nebude potřeba. Propagace transakcí je automatická, pokud byla povolena pomocí klíčového slova Enlist
a nevyžaduje zásah vývojáře. Zprostředkovatel dat rozhraní .NET Framework pro SQL Server poskytuje podporu pro zvýšení úrovně transakcí, zpracovávané prostřednictvím tříd v rozhraní .NET Framework System.Data.SqlClient
oboru názvů.
Klíčové slovo Enlist
Vlastnost ConnectionString
objektu SqlConnection
podporuje klíčové slovo Enlist
, které označuje, zda System.Data.SqlClient
detekuje transakční kontexty a automaticky zařadí připojení do distribuované transakce. Pokud je toto klíčové slovo nastaveno na true (výchozí), připojení se automaticky začte do aktuálního kontextu transakce otevření vlákna. Pokud je toto klíčové slovo nastaveno na false, připojení SqlClient
nekomuaguje s distribuovanou transakcí. Pokud Enlist
není zadán v připojovacím řetězci, připojení se automaticky začte do distribuované transakce, pokud se zjistí v okamžiku otevření připojení.
Distribuované transakce
Distribuované transakce obvykle spotřebovávají významné systémové prostředky. Microsoft Distributed Transaction Coordinator (MS DTC) spravuje takové transakce a integruje všechny správce prostředků, kteří k těmto transakcím přistupují. Povýšení transakcí je na druhou stranu speciální forma System.Transactions
transakce, která efektivně deleguje práci na jednoduchou transakci SQL Serveru.
System.Transactions
, System.Data.SqlClient
a SQL Server koordinuje práci, která se zabývá zpracováním transakce a podle potřeby ji podporuje na úplnou distribuovanou transakci.
Výhodou použití zvýšení úrovně transakcí je, že když je připojení otevřené s aktivní TransactionScope
transakce a nejsou otevřena žádná další připojení, transakce se potvrdí jako jednoduchá transakce, místo aby došlo k nadbytečné režii plné distribuované transakce. Další informace o TransactionScope
naleznete v tématu Použití system.Transactions.