Udostępnij przez


Okresy istnienia transakcji

Dotyczy:programu SQL Server

Istnieje ważna różnica między transakcjami uruchomionymi w Transact-SQL procedur składowanych, a transakcje uruchomione w kodzie zarządzanym: kod środowiska uruchomieniowego języka wspólnego (CLR) nie może równoważyć stanu transakcji podczas wejścia lub zakończenia wywołania CLR. Należy pamiętać o następujących konsekwencjach tej różnicy:

  • Transakcja uruchomiona wewnątrz ramki CLR musi zostać zatwierdzona lub wycofana lub w przeciwnym razie program SQL Server generuje błąd podczas zamykania ramki.

  • Nie można zadeklarować lub wycofać zewnętrznej transakcji wewnątrz kodu CLR.

  • Próba zatwierdzenia transakcji, która nie została uruchomiona w tej samej procedurze, powoduje błąd czasu wykonywania.

  • Próba wycofania transakcji, która nie została uruchomiona w tej samej procedurze, powoduje, że transakcja przestanie odpowiadać (uniemożliwiająca wykonanie jakiejkolwiek innej operacji niepożądanej). Transakcja kończy się, dopóki kod CLR nie przekroczy zakresu. To zachowanie może być przydatne w przypadku wykrycia błędu wewnątrz procedury i upewnienia się, że cała transakcja zakończy się.