Udostępnij za pośrednictwem


Kontrolowanie transakcji (aparat bazy danych)

Aplikacje kontroli transakcji dokonywanych głównie przez określanie, kiedy transakcja rozpoczyna się i kończy.To może być określony przy użyciu jednej Transact-SQL bazy danych lub instrukcji interfejs programowania aplikacji (API) funkcje.System musi również móc poprawnie obsługi błędów, które powodują transakcji przed jej zakończeniem.

Domyślnie transakcje są zarządzane poziom połączenia.Rozpoczęcie transakcji dla połączenia, wszystkie Transact-SQL instrukcji wykonywanych na połączenia były częścią transakcji aż do zakończenia transakcji.Jednak w wielu active zestaw wyników sesja (MARS) Transact-SQL transakcji jawny lub niejawny staje się transakcji wsadowych o zakresie odbywa się poziom partia.Po zakończeniu partia, jeśli nie zatwierdzeniu lub wycofać transakcji wsadowych o zakresie, to jest automatycznie przywracana SQL Server.

Uruchamianie transakcji

Za pomocą funkcji API i Transact-SQL instrukcji, można rozpocząć transakcji wystąpienie z Aparat baz danych programu SQL Server jako jawne, AUTOCOMMIT wynosi, lub transakcje niejawne.W obszarze sesja MARS Transact-SQL Transakcje bezpośrednie i pośrednie oznaczenie partia o zakresie transakcji.

  • Transakcje
    Uruchamiaj jawnie transakcji za pośrednictwem funkcja interfejsu API lub wydanie Transact-SQL instrukcja instrukcja BEGIN TRANSACTION.

  • Transakcje AUTOCOMMIT wynosi
    Domyślny tryb Aparat baz danych.Każda osoba Transact-SQL instrukcja poświęca się po zakończeniu.Nie trzeba określać żadnych oświadczeń do kontroli transakcji.

  • Niejawna transakcji
    Ustaw transakcja niejawna tryb na przez funkcję API lub Transact-SQL na IMPLICIT_TRANSACTIONS zestawu instrukcja.Następna instrukcja automatycznie rozpoczyna nową transakcję.Po zakończeniu tej transakcji, następnej Transact-SQL instrukcja rozpoczyna nową transakcję.

  • Transakcje partii o zakresie
    Zastosowanie tylko do wielu zestawów wyników active (MARS) Transact-SQL jawne lub transakcja niejawna że staje się rozpoczyna się w ramach sesja MARS transakcji wsadowych o zakresie.Buforuj partia transakcji, nie jest zatwierdzona lub wycofywany po zakończeniu partia automatycznie przywracana jest SQL Server.

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

Kończenie transakcji

Można zakończyć transakcji COMMIT lub ROLLBACK instrukcja, lub za pośrednictwem funkcja interfejsu API.

  • ZATWIERDŹ
    Jeśli transakcja jest udana, zatwierdzanie go.Instrukcja COMMIT gwarantuje wszystkich transakcji modyfikacje stają się stałą częścią bazy danych.COMMIT uwalnia zasoby, takie jak blokady używane przez transakcję.

  • WYCOFYWANIE
    Jeśli wystąpi błąd w transakcji lub jeśli użytkownik zdecyduje się na anulowanie transakcji, następnie wycofać transakcji.Instrukcja WYCOFYWANIA wykonuje się wszelkich zmian wprowadzonych w transakcji poprzez zwracanie danych do stanu sprzed w momencie rozpoczęcia transakcji.WYCOFYWANIA uwalnia zasoby utrzymywane przez transakcję.

Ostrzeżenie

W obszarze połączenia włączonej obsługi wielu zestawów wyników active (MARS) transakcja jawna uruchamiane za pośrednictwem funkcja interfejsu API nie można uwzględnić istnieją oczekujących żądań do wykonania.Próba przekazania tego rodzaju zatwierdzanie istnieją zaległe operacje z systemem spowoduje błąd.

Określanie granice transakcji

Można określić, kiedy Aparat baz danych transakcji początkowy i końcowy z Transact-SQL instrukcji lub funkcji interfejsu API i metod.

  • Transact-SQLinstrukcje
    W celu ujęcia transakcji, należy użyć instrukcji instrukcji BEGIN TRANSACTION, ZATWIERDZIĆ transakcji, ZATWIERDZIĆ, TRANSAKCJĘ ROLLBACK, WYCOFYWANIA i Praca zestawu IMPLICIT_TRANSACTIONS.Są one głównie używane w aplikacji biblioteki DB i w Transact-SQL skrypty, takie jak skrypty, które są uruchamiane przy użyciu osql narzędzie wiersz polecenia.

  • Funkcje API i metod
    Bazy danych API, takie jak ODBC, OLE DB, ADO oraz.NET Framework SQLClient nazw może zawierać funkcje lub metody stosowane w celu ujęcia transakcji.Są to podstawowe mechanizmy służące do kontroli transakcji dokonywanych w Aparat baz danych aplikacji.

Każda transakcja muszą być zarządzane tylko jednej z tych metod.Za pomocą obu tych metod z tej samej transakcji może prowadzić do niezdefiniowanych wyniki.Na przykład należy nie uruchomić transakcję za pomocą funkcji interfejsu API ODBC i następnie użyć instrukcja języka Transact-SQL COMMIT transakcji.Nie byłoby to powiadamia SQL Server sterownika ODBC, że transakcja została popełniona.W takim przypadek użyj ODBC SQLEndTran funkcja zakończenia transakcji.

Błędy podczas przetwarzania transakcji

Jeśli błąd uniemożliwia pomyślne zakończenie transakcji, SQL Server automatycznie wycofuje transakcję i zwalnia wszystkie zasoby w posiadaniu transakcji.Jeśli połączenie sieciowe klient do wystąpienia Aparat baz danych jest przerwane, wszelkie zaległe transakcje dla połączenia jest wycofywany po sieci powiadamia wystąpienie podziału.Jeśli aplikacja klient nie powiedzie się lub jeśli komputer kliencki niedziałający lub ponownie uruchomiony, to również powoduje przerwanie połączenia i wystąpienie Aparat baz danych wycofuje wszystkie zaległe połączenia po sieci powiadamia go o podział.Jeśli klient wylogowuje się z aplikacji wszystkie zaległe transakcje są przywracane.

Jeśli uruchomienie -czas wystąpi błąd instrukcja (takie jak naruszenie więzów) w partia, domyślne zachowanie w Aparat baz danych jest, aby wycofać deklarację, że wygenerowany błąd.Można zmienić to zachowanie za pomocą instrukcja XACT_ABORT USTAWIONY.Po wykonaniu Ustaw XACT_ABORT na wszelkie działania -czas błąd instrukcja powoduje automatyczne wycofanie bieżącej transakcji.Ustaw XACT_ABORT nie dotyczy błędów kompilacji, takie jak błędy składni.Aby uzyskać więcej informacji, zobacz ZESTAW XACT_ABORT (Transact-SQL).

Kiedy wystąpią błędy, korygujące akcja (COMMIT lub ROLLBACK) powinny być włączone do kodu aplikacji.Jeden skuteczne narzędzie obsługi błędów, łącznie z tymi w transakcjach, jest Transact-SQL TRY…Konstrukcja CATCH.Aby uzyskać więcej informacji o przykłady, które zawierają transakcje, zobacz Za pomocą SPRÓBOWAĆ...POŁOWU w języku Transact-SQL i TRY...CATCH (Transact-SQL).