Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Det finns en viktig skillnad mellan transaktioner som startats i Transact-SQL lagrade procedurer och transaktioner som startats i hanterad kod: CLR-kod (Common Language Runtime) kan inte balansera transaktionstillståndet vid in- eller utgående av ett CLR-anrop. Tänk på följande konsekvenser av den här skillnaden:
En transaktion som startas i en CLR-ram måste checkas in eller återställas, annars genererar SQL Server ett fel när ramen avslutas.
En yttre transaktion kan inte checkas in eller återställas i CLR-koden.
Ett försök att genomföra en transaktion som inte startats i samma procedur orsakar ett körningsfel.
Ett försök att återställa en transaktion som inte startats i samma procedur gör att transaktionen slutar svara (vilket förhindrar att någon annan sidoeffektåtgärd inträffar). Transaktionen upphör tills CLR-koden hamnar utanför omfånget. Det här beteendet kan vara användbart när du identifierar ett fel i proceduren och vill se till att hela transaktionen avslutas.