zarządzanie transakcjami w sql server
Post on 11-Jan-2016
50 Views
Preview:
DESCRIPTION
TRANSCRIPT
Zarządzanie transakcjami w SQL Server
Marek Adamczuk
O mnie• Od blisko 12 lat programista SQL Server (od 6.5)• Kierownik Wydziału Zarządzania Jakością, Zmianą i
Wiedzą w Asseco Business Solutions Warszawa• Członek i prelegent PLSSUG Warszawa• MCP, MCSE, MCDBA, MCTS, MVP SQL Server
Agenda• Co to jest transakcja?• Co jest, a co nie jest transakcją w SQL Server?• Demo: zarządzanie transakcją wewnątrz procedury
– Prawidłowa obsługa błędów– Zagnieżdżanie transakcji, transakcje nazwane, @@TRANCOUNT– Punkty przywracania, SAVE TRAN– Droga na skróty TRY..CATCH i XACT_ABORT– Jeśli czas pozwoli: próba implementacji transakcji autonomicznej
• Poziom sesji: 300 (co najmniej)
Definicja transakcjiSekwencja operacji modyfikujących bazę danych
traktowana jako całość, tj. z możliwością wycofania w całości
Cechy dobrej implementacji transakcyjności – ACID:Atomic – jeśli wycofujemy to wszystkoConsistent – po zakończeniu baza jest w spójnym stanieIsolated – „bez wpływu” na inne transakcjeDurable – jeśli zatwierdzamy to efekt jest trwały, nawet w przypadku utraty zasilania
Co jest transakcją w SQL Server?• Pojedyncza operacja modyfikująca z grupy DDL,
DML lub DCL poza SELECT..INTO• Operacje w wyzwalaczu (trigger) wraz z instrukcją
modyfikującą uruchamiającą go• Transakcja użytkownika: świadomie sterowana
poleceniami BEGIN TRAN, COMMIT TRAN, ROLLBACK TRAN i SAVE TRAN
Co NIE jest transakcją?• Instrukcja SELECT poza SELECT..INTO• Podstawienie do parametru lub zmiennej, w tym
do zmiennej tablicowej• Niskopoziomowe operacje na plikach typu:
CREATE/DROP/ALTER DATABASE, BACKUP, RESTORE, CHECKPOINT, DBCC.
Transakcje - pojęcia• Transakcja zagnieżdżona – transakcja rozpoczęta
wewnątrz większej transakcji• Transakcja nazwana – wykorzystująca punkty
przywracania• Transakcja niejawna – zaczynana przez operację
modyfikującą, ale wymagającą „ręcznego” zatwierdzenia prze COMMIT TRAN
• Transakcja rozproszona – wykonywana na więcej niż jednym serwerze (protokół 2PC)
• Transakcja autonomiczna – transakcja zagnieżdżona, ale z możliwością niezależnego wycofania
Demo – system magazynowy• Specyfikacja– Stan magazynu zmieniany kolejno numerowanymi
dokumentami przychodu i rozchodu– Jeden towar tylko raz na dokument (na 1 pozycji)– Kontrola stanu (bez stanów ujemnych)– Szybki dostęp do sumarycznej ilości sztuk na dowodzie– Możliwość realizacji zamówień z zewnętrznego systemu
dokumentami rozchodowymi z zachowaniem powiązania z zamówieniem
Podsumowanie• Transakcje w SQL Server wymagają obsługi– To programista SQL ma kontrolować błędy
• Zagnieżdżanie transakcji– Ograniczone zaufanie do uruchamiającego nasze transakcyjne
procedury– Ograniczone zaufanie do @@TRANCOUNT– Tryb IMPLICIT_TRANSACTIONS wymaga innego kodu– SAVE TRAN – dobrze nazywać savepointy– Istnieje czasem trzecia droga
• Transakcje autonomiczne – mogą się przydać– Nie ma bezpośredniej obsługi w SQL Server
Pytania?• ???
top related