Megosztás a következőn keresztül:


Tranzakciós előléptetés

A következőkre vonatkozik:SQL Server

A tranzakciós előléptetési egy egyszerű helyi tranzakciót ír le, amely szükség szerint automatikusan előléptethető egy teljes körűen terjeszthető tranzakcióra. Ha egy felügyelt tárolt eljárás meghívása egy adatbázis-tranzakción belül történik a kiszolgálón, a rendszer egy helyi tranzakció kontextusában futtatja a közös nyelvi futtatókörnyezeti (CLR-) kódot. Ha egy adatbázistranzakción belül megnyit egy kapcsolatot egy távoli kiszolgálóval, a távoli kiszolgálóhoz való csatlakozás szerepel az elosztott tranzakcióban, és a helyi tranzakció automatikusan előléptethető egy elosztott tranzakcióra.

A tranzakció-előléptetés tehát minimálisra csökkenti az elosztott tranzakciók többletterhelését azáltal, hogy elhalasztja az elosztott tranzakciók létrehozását, amíg szükség nem lesz rá. A tranzakció-előléptetés automatikus, ha az Enlist kulcsszóval lett engedélyezve, és nem igényel beavatkozást a fejlesztőtől. Az SQL Serverhez készült .NET-keretrendszer adatszolgáltatója támogatja a tranzakció-előléptetést, amely a .NET-keretrendszer System.Data.SqlClient névtér osztályain keresztül történik.

Az Enlist kulcsszó

Egy SqlConnection objektum ConnectionString tulajdonsága támogatja a Enlist kulcsszót, amely jelzi, hogy System.Data.SqlClient észleli-e a tranzakciós környezeteket, és automatikusan bevonja a kapcsolatot egy elosztott tranzakcióba. Ha ez a kulcsszó igaz (alapértelmezett) értékre van állítva, a kapcsolat automatikusan megjelenik a nyitó szál aktuális tranzakciós környezetében. Ha ez a kulcsszó hamis értékre van állítva, a SqlClient kapcsolat nem működik együtt elosztott tranzakcióval. Ha Enlist nincs megadva a kapcsolati sztringben, a rendszer automatikusan felvesz egy elosztott tranzakcióba, ha a kapcsolat megnyitásakor észlelnek egyet.

Elosztott tranzakciók

Az elosztott tranzakciók általában jelentős rendszererőforrásokat használnak fel. A Microsoft Distributed Transaction Coordinator (MS DTC) kezeli az ilyen tranzakciókat, és integrálja az ezekben a tranzakciókban elért összes erőforrás-kezelőt. A tranzakciós előléptetés viszont egy System.Transactions tranzakció speciális formája, amely gyakorlatilag egy egyszerű SQL Server-tranzakcióra delegálja a munkát. System.Transactions, System.Data.SqlClientés SQL Server koordinálja a tranzakció kezelésével kapcsolatos munkát, és szükség szerint egy teljes elosztott tranzakcióra terjeszti azt.

A tranzakció-előléptetés előnye, hogy ha egy kapcsolat aktív TransactionScope tranzakcióval van megnyitva, és nincs más kapcsolat, a tranzakció egyszerű tranzakcióként véglegesít, ahelyett, hogy a teljes elosztott tranzakció többletterhelésével jár. A TransactionScopetovábbi információ: System.Transactionshasználata.