Udostępnij za pomocą


Transakcje (Azure Synapse Analytics)

Dotyczy:azure Synapse AnalyticsAnalytics Platform System (PDW)

Transakcja jest grupą co najmniej jednej instrukcji bazy danych, które są całkowicie zatwierdzone lub całkowicie wycofane. Każda transakcja jest niepodzielna, spójna, izolowana i trwała (ACID). Jeśli transakcja powiedzie się, wszystkie instrukcje w niej zostaną zatwierdzone. Jeśli transakcja zakończy się niepowodzeniem, oznacza to, że co najmniej jedna z instrukcji w grupie zakończy się niepowodzeniem, cała grupa zostanie wycofana.

Nuta

Polecenie SET AUTOCOMMIT nie jest obsługiwane w usłudze Microsoft Fabric Data Warehouse. Aby uzyskać więcej informacji na temat transakcji, izolacji, współbieżności i spójności w usłudze Microsoft Fabric Data Warehouse, zobacz Transakcje w magazynie danych sieci szkieletowej.

Początek i koniec transakcji zależy od AUTOCOMMIT ustawienia i BEGIN TRANSACTIONinstrukcji , COMMITi ROLLBACK .

Obsługiwane są następujące typy transakcji:

  • Jawne transakcje zaczynają się od instrukcji BEGIN TRANSACTION i kończą się instrukcją COMMIT or ROLLBACK .

  • Transakcje automatycznego zatwierdzania są inicjowane automatycznie w ramach sesji i nie rozpoczynają się od instrukcji BEGIN TRANSACTION .

    • Gdy ustawienie to , każda AUTOCOMMIT instrukcja jest uruchamiana w transakcji i nie jest to jawne COMMIT lub ROLLBACK jest konieczne.ON
    • AUTOCOMMIT Jeśli ustawienie to OFF, COMMIT instrukcja or ROLLBACK jest wymagana do określenia wyniku transakcji. Automatyczne zatwierdzanie transakcji rozpoczyna się natychmiast po COMMIT instrukcji lub ROLLBACK po instrukcji SET AUTOCOMMIT OFF .

Transact-SQL konwencje składni

Składnia

BEGIN TRANSACTION [;]  
COMMIT [ TRAN | TRANSACTION | WORK ] [;]  
ROLLBACK [ TRAN | TRANSACTION | WORK ] [;]  
SET AUTOCOMMIT { ON | OFF } [;]  
SET IMPLICIT_TRANSACTIONS { ON | OFF } [;]  

Argumenty

ROZPOCZNIJ TRANSAKCJĘ

Oznacza punkt początkowy transakcji jawnej.

COMMIT [ WORK ]

Oznacza koniec jawnej lub automatycznej transakcji. Ta instrukcja powoduje trwałe zatwierdzanie zmian transakcji w bazie danych. COMMIT Instrukcja jest identyczna z instrukcjami COMMIT WORK, COMMIT TRANi COMMIT TRANSACTION.

WYCOFYWANIE [ PRACA ]

Cofa transakcję na początku transakcji. Żadne zmiany transakcji nie są zatwierdzane w bazie danych. ROLLBACK Instrukcja jest identyczna z instrukcjami ROLLBACK WORK, ROLLBACK TRANi ROLLBACK TRANSACTION.

USTAWIANIE AUTOCOMMIT { ON | WYŁ. }

Określa sposób uruchamiania i kończenia transakcji.

Jeśli zmienisz AUTOCOMMIT ustawienie w ramach aktywnej transakcji, ustawienie wpłynie na bieżącą transakcję i nie zostanie zastosowane do momentu zakończenia transakcji.

Jeśli AUTOCOMMIT jest to ON, uruchomienie innej SET AUTOCOMMIT ON instrukcji nie ma wpływu. Podobnie, jeśli AUTOCOMMIT jest OFF, uruchomienie innego SET AUTOCOMMIT OFF nie ma żadnego efektu.

NA

Każda instrukcja jest uruchamiana w ramach własnej transakcji i nie COMMIT jest wymagana żadna jawna instrukcja ani ROLLBACK instrukcja. Jawne transakcje są dozwolone, gdy AUTOCOMMIT ma wartość ON.

OD

Usługa Azure Synapse Analytics automatycznie inicjuje transakcję, gdy transakcja nie jest jeszcze w toku. Wszystkie kolejne instrukcje są uruchamiane w ramach transakcji, a element COMMIT lub ROLLBACK jest niezbędny do określenia wyniku transakcji. Gdy tylko transakcja zostanie zatwierdzona lub wycofana w tym trybie operacji, tryb pozostanie OFF, zostanie zainicjowana nowa transakcja. Jawne transakcje nie są dozwolone, gdy AUTOCOMMIT ma wartość OFF.

SET IMPLICIT_TRANSACTIONS { ON | WYŁ. }

Spowoduje to przełączenie tych samych trybów co SET AUTOCOMMIT. Gdy ONprogram SET IMPLICIT_TRANSACTIONS ustawia połączenie w tryb niejawnej transakcji. Gdy OFFfunkcja zwraca połączenie z trybem automatycznego zatwierdzania. Aby uzyskać więcej informacji, zobacz SET IMPLICIT_TRANSACTIONS (Transact-SQL).

Uprawnienia

Do uruchamiania instrukcji związanych z transakcjami nie są wymagane żadne określone uprawnienia. Uprawnienia są wymagane do uruchomienia instrukcji w ramach transakcji.

Obsługa błędów

Jeśli COMMIT lub ROLLBACK są uruchamiane i nie ma aktywnej transakcji, zostanie zgłoszony błąd.

BEGIN TRANSACTION Jeśli element jest uruchamiany, gdy transakcja jest już w toku, zostanie zgłoszony błąd. Może się tak zdarzyć, jeśli wystąpi błąd BEGIN TRANSACTION po pomyślnym BEGIN TRANSACTION wykonaniu instrukcji lub gdy sesja znajduje się w obszarze SET AUTOCOMMIT OFF.

Jeśli błąd inny niż błąd instrukcji czasu wykonywania uniemożliwia pomyślne zakończenie transakcji jawnej, aparat bazy danych automatycznie wycofa transakcję i zwalnia wszystkie zasoby przechowywane przez transakcję. Jeśli na przykład połączenie sieciowe klienta zostanie przerwane lub klient wycofuje się z aplikacji, wszystkie niezatwierdzone transakcje dla połączenia zostaną wycofane, gdy sieć powiadomi wystąpienie przerwania.

Jeśli w partii wystąpi błąd instrukcji czasu wykonywania, usługa Azure Synapse Analytics zachowuje się zgodnie z ustawionym programem SQL Server XACT_ABORT , ON a cała transakcja zostanie wycofana. Aby uzyskać więcej informacji na temat XACT_ABORT ustawienia, zobacz SET XACT_ABORT (Transact-SQL).

Uwagi

Sesja może uruchamiać tylko jedną transakcję w danym momencie; punkty zapisu i transakcje zagnieżdżone nie są obsługiwane.

Obowiązkiem programisty jest wystawianie COMMIT tylko w momencie, gdy wszystkie dane, do których odwołuje się transakcja, są logicznie poprawne.

Po zakończeniu sesji przed zakończeniem transakcji transakcja zostanie wycofana.

Tryby transakcji są zarządzane na poziomie sesji. Jeśli na przykład jedna sesja rozpoczyna jawną transakcję lub ustawia wartość AUTOCOMMITOFF, lub ustawia wartość IMPLICIT_TRANSACTIONSON, nie ma wpływu na tryby transakcji żadnej innej sesji.

Ograniczenia

Nie można wycofać transakcji po wydaniu COMMIT instrukcji, ponieważ modyfikacje danych zostały wprowadzone w stałej części bazy danych.

Polecenia CREATE DATABASE i DROP DATABASE (Transact-SQL) nie mogą być używane wewnątrz jawnej transakcji.

Usługa Azure Synapse Analytics nie ma mechanizmu udostępniania transakcji. Oznacza to, że w dowolnym momencie tylko jedna sesja może wykonywać pracę nad dowolną transakcją w systemie.

Zachowanie blokujące

Blokowanie zapewnia integralność transakcji i utrzymuje spójność baz danych, gdy wielu użytkowników uzyskuje dostęp do danych w tym samym czasie. Blokowanie jest używane zarówno przez niejawne, jak i jawne transakcje. Każda transakcja żąda blokad różnych typów zasobów, takich jak tabele lub bazy danych, od których zależy transakcja.

Wszystkie blokady są na poziomie tabeli lub wyższym. Blokady blokują modyfikowanie zasobów w inny sposób, co spowodowałoby problemy z transakcją żądającą blokady. Każda transakcja zwalnia blokady, gdy nie ma już zależności od zablokowanych zasobów; jawne transakcje zachowują blokady, dopóki transakcja nie zostanie ukończona, gdy zostanie zatwierdzona lub wycofana.

Przykłady

A. Używanie transakcji jawnej

BEGIN TRANSACTION;  
       DELETE FROM HumanResources.JobCandidate  
       WHERE JobCandidateID = 13;
COMMIT;  

B. Wycofywanie otwartej transakcji

W poniższym przykładzie pokazano efekt wycofywania transakcji. W tym przykładzie ROLLBACK instrukcja wycofa instrukcję INSERT , ale utworzona tabela nadal istnieje.

CREATE TABLE ValueTable (id INT);  

BEGIN TRANSACTION;  
       INSERT INTO ValueTable VALUES(1);  
       INSERT INTO ValueTable VALUES(2);  
ROLLBACK;  

C. Ustawianie AUTOCOMMIT

Poniższy przykład ustawia AUTOCOMMIT ustawienie na ON.

SET AUTOCOMMIT ON;  

Poniższy przykład ustawia AUTOCOMMIT ustawienie na OFF.

SET AUTOCOMMIT OFF;  

D. Używanie niejawnej transakcji z wieloma instrukcjami

SET AUTOCOMMIT OFF;  

CREATE TABLE ValueTable (id INT);  
INSERT INTO ValueTable VALUES(1);  
INSERT INTO ValueTable VALUES(2);  

COMMIT;