Sdílet prostřednictvím


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.SqlClienta 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 TransactionScopenaleznete v tématu Použití system.Transactions.