Zarządzanie transakcjami w SQL Server

10
Zarządzanie transakcjami w SQL Server Marek Adamczuk

description

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. - PowerPoint PPT Presentation

Transcript of Zarządzanie transakcjami w SQL Server

Page 1: Zarządzanie transakcjami  w SQL Server

Zarządzanie transakcjami w SQL Server

Marek Adamczuk

Page 2: Zarządzanie transakcjami  w SQL Server

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

Page 3: Zarządzanie transakcjami  w 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)

Page 4: Zarządzanie transakcjami  w SQL Server

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

Page 5: Zarządzanie transakcjami  w SQL Server

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

Page 6: Zarządzanie transakcjami  w SQL Server

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.

Page 7: Zarządzanie transakcjami  w SQL Server

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

Page 8: Zarządzanie transakcjami  w SQL Server

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

Page 9: Zarządzanie transakcjami  w SQL Server

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

Page 10: Zarządzanie transakcjami  w SQL Server

Pytania?• ???