Udostępnij za pomocą


sys.dm_tran_transactions_snapshot (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w usłudze Microsoft Fabric

Zwraca wirtualną tabelę dla sequence_number transakcji aktywnych w momencie rozpoczęcia każdej transakcji snapshot. Informacje zwracane przez ten widok mogą pomóc Ci w następującym zadaniu:

  • Znajdź liczbę aktywnych transakcji snapshot.

  • Zidentyfikuj modyfikacje danych, które są ignorowane przez konkretną transakcję snapshot. W przypadku transakcji aktywnej w momencie rozpoczęcia transakcji migawkowej wszystkie modyfikacje danych dokonywane przez tę transakcję, nawet po jej zatwierdzeniu, są ignorowane przez transakcję migawkową.

Na przykład rozważmy następujące wyjście z sys.dm_tran_transactions_snapshot:

transaction_sequence_num snapshot_id snapshot_sequence_num  
------------------------ ----------- ---------------------  
59                       0           57  
59                       0           58  
60                       0           57  
60                       0           58  
60                       0           59  
60                       3           57  
60                       3           58  
60                       3           59  
60                       3           60  

Kolumna transaction_sequence_num wskazuje numer sekwencji transakcji (XSN) aktualnych transakcji migawkowych. Wyjście pokazuje dwa: 59 oraz 60. Kolumna snapshot_sequence_num ta określa numer sekwencji transakcji aktywnych na początku każdej transakcji snapshot.

Wyniki pokazują, że transakcja snapshot XSN-59 rozpoczyna się, gdy działają dwie aktywne transakcje, XSN-57 i XSN-58. Jeśli XSN-57 lub XSN-58 dokonuje modyfikacji danych, XSN-59 ignoruje te zmiany i stosuje wersjonowanie wierszy, aby utrzymać transakcyjnie spójny widok bazy danych.

Transakcja migawkowa XSN-60 ignoruje modyfikacje danych wprowadzone przez XSN-57, XSN-58 oraz XSN 59.

Zwracana tabela

Nazwa kolumny Typ danych Description
transaction_sequence_num bigint Numer sekwencyjny transakcji (XSN) transakcji migawkowej.
snapshot_id int Identyfikator migawki dla każdego Transact-SQL zaczął się pod read-commit, używając wersjonowania wiersza. Ta wartość służy do wygenerowania transakcyjnie spójnego widoku bazy danych, wspierającego każde zapytanie wykonywane w trybie read-commit, przy użyciu wersjonowania wiersza.
snapshot_sequence_num bigint Numer sekwencyjny transakcji transakcji, która była aktywna, gdy transakcja snapshot się rozpoczęła.

Permissions

W programie SQL Server i usłudze SQL Managed Instance wymagane jest VIEW SERVER STATE uprawnienie.

W przypadku celów usługi SQL Database Basic, S0 i S1 oraz baz danych w elastycznych pulach wymagane jest konto administratora serwera , konto administratora firmy Microsoft Entra lub członkostwo w ##MS_ServerStateReader##roli serwera . We wszystkich innych celach usługi SQL Database wymagane VIEW DATABASE STATE jest uprawnienie do bazy danych lub członkostwo w ##MS_ServerStateReader## roli serwera.

Uprawnienia dla programu SQL Server 2022 i nowszych

Wymaga uprawnienia WYŚWIETL STAN WYDAJNOŚCI SERWERA na serwerze.

Uwagi

Gdy rozpoczyna się transakcja migawkowa, silnik bazy danych rejestruje wszystkie aktywne transakcje w danym momencie. sys.dm_tran_transactions_snapshot raportuje te informacje dla wszystkich obecnie aktywnych transakcji snapshot.

Każda transakcja jest identyfikowana przez numer sekwencyjny transakcji, który jest przypisywany na jej początku. Transakcje rozpoczynają się w momencie wykonania instrukcji BEGIN TRANSACTION lub BEGIN WORK. Jednak Silnik Bazy Danych przypisuje numer sekwencyjny transakcji wraz z wykonaniem pierwszego Transact-SQL polecenia, które uzyskuje dostęp do danych po poleceniu BEGIN TRANSACTION lub BEGIN WORK. Numery sekwencji transakcji są zwiększane o jeden.

Zobacz też

Dynamiczne widoki zarządzania i funkcje (Transact-SQL)
Dynamiczne widoki zarządzania i funkcje związane z transakcjami (Transact-SQL)