1 / 10

Zarządzanie transakcjami w SQL Server

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.

dieter
Download Presentation

Zarządzanie transakcjami w SQL Server

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Zarządzanie transakcjami w SQL Server Marek Adamczuk

  2. 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, MVPSQL Server

  3. 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)

  4. Definicja transakcji Sekwencja 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 wszystko Consistent– po zakończeniu baza jest w spójnym stanie Isolated – „bez wpływu” na inne transakcje Durable – jeśli zatwierdzamy to efekt jest trwały, nawet w przypadku utraty zasilania

  5. 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

  6. 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.

  7. 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

  8. 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

  9. 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 

  10. Pytania? • ???

More Related