Udostępnij za pośrednictwem


Kontrola transakcji (aparat bazy danych)

Aplikacje kontroli transakcji głównie przez określanie, kiedy transakcja początkowej i końcowej.To może być określona przy użyciu jednej Transact-SQL instrukcje lub programowania funkcji interfejs programowania aplikacji (API, interfejs programowania aplikacji) w bazie danych aplikacji. W systemie musi być również mógł poprawnie obsługi błędów, które zakończenia transakcji przed jej zakończeniem.

Domyślnie transakcje są zarządzane poziom połączenia.Po rozpoczęciu transakcji dla połączenia, wszystkie Transact-SQL instrukcje wykonywane w odniesieniu do tego połączenia są częścią transakcji aż do zakończenia transakcji. Jednak w wyniku aktywnych wiele ustawić sesja (MARS), Transact-SQL transakcja jawny lub niejawny staje się o zakresie partia transakcji, która jest zarządzana poziom zadań wsadowych. Po zakończeniu partia, jeśli transakcji wsadowych o zakresie nie jest przekazana lub wycofana, to jest automatycznie przywracana SQL Server.

Rozpoczynanie transakcji

Za pomocą funkcji interfejsu API i Transact-SQL instrukcje, można rozpocząć transakcji w wystąpieniu SQL Server Database Engine jak jawnych, autocommit lub niejawne transakcji. W obszarze sesja MARS Transact-SQL jawne i niejawne transakcji stają się transakcje partia o zakresie.

  • Jawne transakcji
    Jawnie uruchomić transakcję za pośrednictwem funkcja interfejsu API lub wysyłając Transact-SQL Instrukcja instrukcji BEGIN TRANSACTION.

  • Transakcje autocommit
    Domyślny tryb Database Engine. Każda osoba Transact-SQL Po zakończeniu dba instrukcja. Nie trzeba określać żadnych instrukcji do kontroli transakcji.

  • Implicit Transactions
    Ustaw tryb transakcja niejawna na za pomocą jednej funkcja interfejsu API lub Transact-SQL Instrukcja zestaw ON IMPLICIT_TRANSACTIONS. Następna instrukcja automatycznie rozpoczyna nową transakcję.Po zakończeniu tej transakcji, przy następnym Transact-SQL Instrukcja rozpoczyna nową transakcję.

  • Transakcje partia o zakresie
    Zastosowanie tylko do wielu zestawów wyników aktywne (MARS), Transact-SQL jawny lub niejawny transakcji, która zostanie uruchomiony w sesja MARS staje się transakcji wsadowych o zakresie. O zakresie partia transakcji, która nie jest zatwierdzona lub wycofywany po zakończeniu zadanie partia automatycznie jest przywracana SQL Server.

Tryby transakcji są zarządzane poziom połączenia.Jeśli jedno połączenie zmienia się z trybu jednej transakcji do drugiego, to nie ma wpływu na rodzajów transakcji inne połączenie.

Kończenie transakcji

Można zakończyć transakcji z wyciągu zatwierdzanie lub ROLLBACK i za pośrednictwem funkcja interfejsu API.

  • zatwierdzanie
    Jeśli transakcja się powiedzie, zatwierdzanie go.Instrukcja zatwierdzanie gwarancje, wszystkie zmiany transakcji odbywa się stałą częścią bazy danych.zatwierdzanie uwalnia zasobów, takich jak blokady, używane przez transakcję.

  • WYCOFYWANIE
    W przypadku wystąpienia błędu w transakcji lub jeśli użytkownik zdecyduje się na anulowanie transakcji, następnie wycofać transakcji.Instrukcja ROLLBACK zapisuje się wszystkie zmiany dokonane w transakcji przez przesłać dane do stanu, w którym był w chwili rozpoczęcia transakcji.ROLLBACK uwalnia zasoby utrzymywane przez transakcję.

Uwaga

Mocy do obsługi wielu zestawów wyników aktywne (MARS) po włączeniu połączeń transakcja jawna uruchomiona za pomocą funkcja interfejsu API nie może być zadeklarowana w czasie, gdy istnieją oczekujące żądania do wykonania.Każda próba przekazania tego typu transakcji w czasie, gdy nie ma zaległych operacji uruchamiania, spowoduje błąd.

Określanie granice transakcji

Można określić, kiedy Database Engine transakcje początkowy i końcowy z Transact-SQL instrukcje lub funkcje interfejsu API i metody.

  • Transact-SQL instrukcje
    Za pomocą instrukcje instrukcji BEGIN TRANSACTION, zatwierdzanie TRANSACTION, praca zatwierdzanie, ROLLBACK TRANSACTION, ROLLBACK pracę i zestaw IMPLICIT_TRANSACTIONS ujęcia transakcji.Są one głównie używane w aplikacjach biblioteki DB i Transact-SQL skrypty, takie jak skrypty, które są uruchamiane przy użyciu Osql narzędzie wiersz polecenia.

  • Funkcje interfejsu API oraz metody
    Interfejsy API bazy danych, takich jak ODBC, OLE DB, ADO i obszaru nazw systemu .NET Framework SQLClient zawierają funkcje i metody używane do ujęcia transakcji.Są to podstawowe mechanizmy służące do sterowania transakcji w Database Engine aplikacja.

Każdej transakcji muszą być zarządzane przez tylko jeden z tych metod.Przy użyciu obu metod na tej samej transakcji może prowadzić do niezdefiniowanych wyniki.Na przykład należy należy nie uruchomić transakcji za pomocą funkcji interfejsu API ODBC, a następnie za pomocą instrukcja języka Transact-SQL zatwierdzanie transakcji.To nie będzie powiadamiać SQL Server Sterownik ODBC, czy transakcja została zatwierdzona. W takim przypadek za pomocą ODBC SQLEndTran funkcja do zakończenia transakcji.

Błędy podczas przetwarzania transakcji

Jeśli błąd uniemożliwia pomyślne zakończenie transakcji, SQL Server automatycznie powoduje powrót transakcję i zwalnia wszystkie zasoby utrzymywane przez transakcję. Jeśli połączenie sieciowe klient do wystąpienia Database Engine to połączenie jest wycofywany po sieci powiadamia wystąpienie podziału przerwane, wszelkie oczekujących transakcji. Jeśli aplikacja klient nie powiedzie się lub jeśli komputer kliencki ulegnie uszkodzeniu lub zostanie ponownie uruchomiony, to przerywa również połączenie i wystąpienie Database Engine powoduje powrót żadnych oczekujących połączeń podczas sieci powiadamia go o przerwa. Jeśli klient wylogowuje aplikacji, wszystkie zaległe transakcje są przywracane.

Jeśli wystąpi błąd czas wykonywania instrukcja (na przykład naruszenie ograniczenia), w serii, domyślne zachowanie w Database Engine jest wycofać tylko w instrukcja, który wygenerował błąd. Można zmienić to zachowanie, za pomocą instrukcja zestaw XACT_ABORT.Po wykonaniu zestaw ON XACT_ABORT, każdy błąd czas wykonywania instrukcja powoduje automatyczne wycofanie bieżącej transakcji.Błędy kompilacji, takie jak błędy składni, nie są zagrożone XACT_ABORT zestaw.Aby uzyskać więcej informacji zobaczzestaw XACT_ABORT (języka Transact-SQL).

Jeśli wystąpią błędy akcja korygujące (zatwierdzanie lub ROLLBACK) powinny być włączone w kodzie aplikacji.Jeden efektywne narzędzie obsługi błędów, łącznie z tymi w transakcjach, Transact-SQL Konstrukcja TRY…CATCH. Aby uzyskać więcej informacji o przykłady, które zawierają transakcje zobacz Za pomocą TRY... CATCH instrukcji języka Transact-SQL i ... TRY CATCH (języka Transact-SQL).