sys.dm_tran_active_snapshot_database_transactions (Transact-SQL)sys.dm_tran_active_snapshot_database_transactions (Transact-SQL)

APLICA-SE A: simSQL Server simBanco de Dados SQL do Azure simAzure Synapse Analytics (SQL DW) simParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse

Em uma instância de SQL ServerSQL Server, esta exibição de gerenciamento dinâmico retorna uma tabela virtual para todas as transações ativas que geram ou potencialmente acessam versões de linhas.In a SQL ServerSQL Server instance, this dynamic management view returns a virtual table for all active transactions that generate or potentially access row versions. As transações são incluídas em uma ou mais das seguintes condições:Transactions are included for one or more of the following conditions:

  • Quando uma ou ambas as opções de banco de dados ALLOW_SNAPSHOT_ISOLATION e READ_COMMITTED_SNAPSHOT estão definidas como ON:When either or both ALLOW_SNAPSHOT_ISOLATION and READ_COMMITTED_SNAPSHOT database options are set to ON:

    • Há uma linha para cada transação cuja execução aconteça em nível de isolamento do instantâneo ou em nível de isolamento confirmado por leitura utilizando controle de versão de linhas.There is one row for each transaction that is running under snapshot isolation level, or read-committed isolation level that is using row versioning.

    • Há uma linha para cada transação que cause a criação de uma versão de linha no banco de dados atual.There is one row for each transaction that causes a row version to be created in the current database. Por exemplo, a transação gera uma versão de linha pela atualização ou exclusão de uma linha no banco de dados atual.For example, the transaction generates a row version by updating or deleting a row in the current database.

  • Quando um gatilho é ativado, há uma linha para a transação sob a qual o gatilho está executando.When a trigger is fired, there is one row for the transaction under which the trigger is executing.

  • Quando um procedimento de indexação online está em execução, há uma linha para a transação que está criando o índice.When an online indexing procedure is running, there is one row for the transaction that is creating the index.

  • Quando uma sessão MARS (Multiple Active Results Sets) está habilitada, há uma linha para cada transação que está acessando versões de linha.When Multiple Active Results Sets (MARS) session is enabled, there is one row for each transaction that is accessing row versions.

Esta exibição de gerenciamento dinâmico não inclui transações de sistema.This dynamic management view does not include system transactions.

Observação

Chamá-lo partir Azure Synapse Analytics (SQL DW)Azure Synapse Analytics (SQL DW) ou Parallel Data WarehouseParallel Data Warehouse, use o nome sys.dm_pdw_nodes_tran_active_snapshot_database_transactions.To call this from Azure Synapse Analytics (SQL DW)Azure Synapse Analytics (SQL DW) or Parallel Data WarehouseParallel Data Warehouse, use the name sys.dm_pdw_nodes_tran_active_snapshot_database_transactions.

SintaxeSyntax

  
sys.dm_tran_active_snapshot_database_transactions  

Tabela retornadaTable Returned

Nome da colunaColumn name Tipo de dadosData type DescriçãoDescription
transaction_idtransaction_id bigintbigint Número de identificação exclusivo atribuído à transação.Unique identification number assigned for the transaction. O ID transação é usado principalmente para identificar a transação em operações de bloqueio.The transaction ID is primarily used to identify the transaction in locking operations.
transaction_sequence_numtransaction_sequence_num bigintbigint Número de sequência da transação.Transaction sequence number. Trata-se de um número de sequência exclusivo atribuído a uma transação quando ela se inicia.This is a unique sequence number that is assigned to a transaction when it starts. Transações que não geram registros de versão e não usam verificações de instantâneo não receberão um número de sequência de transação.Transactions that do not generate version records and do not use snapshot scans will not receive a transaction sequence number.
commit_sequence_numcommit_sequence_num bigintbigint Número de sequência que indica quando a transação termina (confirmações ou paradas).Sequence number that indicates when the transaction finishes (commits or stops). Para transações ativas, o valor é NULL.For active transactions, the value is NULL.
is_snapshotis_snapshot intint 0 = Não é uma transação de isolamento de instantâneo.0 = Is not a snapshot isolation transaction.

1 = É uma transação de isolamento de instantâneo.1 = Is a snapshot isolation transaction.
session_idsession_id intint ID da sessão que iniciou a transação.ID of the session that started the transaction.
first_snapshot_sequence_numfirst_snapshot_sequence_num bigintbigint Número de sequência de transação mais baixo das transações que estavam ativas quando o instantâneo foi feito.Lowest transaction sequence number of the transactions that were active when a snapshot was taken. Em execução, uma transação de instantâneo faz um instantâneo de todas as transações ativas naquele momento.On execution, a snapshot transaction takes a snapshot of all of the active transactions at that time. No caso de transações não instantâneo, esta coluna mostra 0.For nonsnapshot transactions, this column shows 0.
max_version_chain_traversedmax_version_chain_traversed intint Comprimento máximo da cadeia de versão que é atravessada para localizar a versão consistente transacional.Maximum length of the version chain that is traversed to find the transactionally consistent version.
average_version_chain_traversedaverage_version_chain_traversed realreal Número médio de versões de linha nas cadeias de versão que são atravessadas.Average number of row versions in the version chains that are traversed.
elapsed_time_secondselapsed_time_seconds bigintbigint Tempo decorrido desde que a transação obteve seu número de sequência de transação.Elapsed time since the transaction obtained its transaction sequence number.
pdw_node_idpdw_node_id intint Aplica-se ao: Azure Synapse Analytics (SQL DW)Azure Synapse Analytics (SQL DW), Parallel Data WarehouseParallel Data WarehouseApplies to: Azure Synapse Analytics (SQL DW)Azure Synapse Analytics (SQL DW), Parallel Data WarehouseParallel Data Warehouse

O identificador para o nó que essa distribuição é no.The identifier for the node that this distribution is on.

PermissõesPermissions

Na SQL ServerSQL Server, requer VIEW SERVER STATE permissão.On SQL ServerSQL Server, requires VIEW SERVER STATE permission.
Na Banco de Dados SQLSQL Database camadas Premium, requer o VIEW DATABASE STATE permissão no banco de dados.On Banco de Dados SQLSQL Database Premium Tiers, requires the VIEW DATABASE STATE permission in the database. Na Banco de Dados SQLSQL Database camadas Standard e básica, requer a administrador de servidor ou uma administrador do Active Directory do Azure conta.On Banco de Dados SQLSQL Database Standard and Basic Tiers, requires the Server admin or an Azure Active Directory admin account.

ComentáriosRemarks

DM tran_active_snapshot_database_transactions relata as transações que são atribuídas a um número de sequência da transação (XSN).sys.dm_tran_active_snapshot_database_transactions reports transactions that are assigned a transaction sequence number (XSN). O XSN é atribuído quando a transação acessa o armazenamento de versões pela primeira vez.The XSN is assigned when the transaction first accesses the version store. Em um banco de dados habilitado para isolamento de instantâneo ou isolamento confirmado por leitura utilizando controle de versão de linhas, os exemplos mostram quando um XSN é atribuído a uma transação:In a database that is enabled for snapshot isolation or read committed isolation using row versioning, the examples show when an XSN is assigned to a transaction:

  • Se uma transação estiver executando em nível de isolamento de serializável, um XSN será atribuído quando a transação executar, pela primeira vez, uma instrução, como uma operação UPDATE, que cause a criação de uma versão de linha.If a transaction is running under serializable isolation level, an XSN is assigned when the transaction first executes a statement, such as an UPDATE operation, that causes a row version to be created.

  • Se uma transação estiver executando em isolamento de instantâneo, um XSN será atribuído quando alguma instrução de linguagem de manipulação de dados (DML), inclusive uma operação SELECT, for executada.If a transaction is running under snapshot isolation, an XSN is assigned when any data manipulation language (DML) statement, including a SELECT operation, is executed.

Números de sequência de transação são incrementados em série para cada transação iniciada em uma instância de Mecanismo de Banco de DadosDatabase Engine.Transaction sequence numbers are serially incremented for each transaction that is started in an instance of the Mecanismo de Banco de DadosDatabase Engine.

ExemplosExamples

O exemplo a seguir usa um cenário de teste no qual quatro transações simultâneas, cada uma identificada por um XSN (número de sequência de transação), estão sendo executadas em um banco de dados no qual as opções ALLOW_SNAPSHOT_ISOLATION e READ_COMMITTED_SNAPSHOT estão definidas como ON.The following example uses a test scenario in which four concurrent transactions, each identified by a transaction sequence number (XSN), are running in a database that has the ALLOW_SNAPSHOT_ISOLATION and READ_COMMITTED_SNAPSHOT options set to ON. As seguintes transações estão sendo executadas:The following transactions are running:

  • XSN-57 é uma operação de atualização sob o isolamento serializável.XSN-57 is an update operation under serializable isolation.

  • XSN-58 é o mesmo que XSN-57.XSN-58 is the same as XSN-57.

  • XSN-59 é uma operação de seleção sob o isolamento de instantâneoXSN-59 is a select operation under snapshot isolation

  • XSN-60 é o mesmo que XSN-59.XSN-60 is same as XSN-59.

A consulta a seguir é executada.The following query is executed.

SELECT   
    transaction_id,  
    transaction_sequence_num,  
    commit_sequence_num,  
    is_snapshot session_id,  
    first_snapshot_sequence_num,  
    max_version_chain_traversed,  
    average_version_chain_traversed,  
    elapsed_time_seconds  
  FROM sys.dm_tran_active_snapshot_database_transactions;  

Aqui está o conjunto de resultados.Here is the result set.

transaction_id  transaction_sequence_num  commit_sequence_num  
--------------  ------------------------  -------------------  
9295            57                        NULL  
9324            58                        NULL  
9387            59                        NULL  
9400            60                        NULL  
  
is_snapshot  session_id   first_snapshot_sequence_num  
-----------  -----------  ---------------------------  
0            54           0  
0            53           0  
1            52           57  
1            51           57  
  
max_version_chain_traversed  average_version_chain_traversed  
---------------------------  -------------------------------  
0                            0  
0                            0  
1                            1  
1                            1  
  
elapsed_time_seconds  
--------------------  
419  
397  
359  
333  

As informações a seguir avaliam os resultados de DM tran_active_snapshot_database_transactions:The following information evaluates the results from sys.dm_tran_active_snapshot_database_transactions:

  • XSN-57: Porque esta transação não está em execução em isolamento de instantâneo, o is_snapshot valor e first_snapshot_sequence_num são 0.XSN-57: Because this transaction is not running under snapshot isolation, the is_snapshot value and first_snapshot_sequence_num are 0. O transaction_sequence_num mostra que um número de sequência de transação foi atribuído a esta transação, pois uma ou ambas as opções de banco de dados ALLOW_SNAPSHOT_ISOLATION e READ_COMMITTED_SNAPSHOT são ON.transaction_sequence_num shows that a transaction sequence number has been assigned to this transaction, because one or both ALLOW_SNAPSHOT_ISOLATION or READ_COMMITTED_SNAPSHOT database options are ON.

  • XSN-58: Esta transação não está em execução em isolamento de instantâneo e aplicam as mesmas informações do XSN-57.XSN-58: This transaction is not running under snapshot isolation and the same information for XSN-57 applies.

  • XSN-59: Isso é a primeira transação ativa que está executando em isolamento de instantâneo.XSN-59: This is the first active transaction that is running under snapshot isolation. Esta transação lê dados confirmados antes de XSN-57, como indicado por first_snapshot_sequence_num.This transaction reads data that is committed before XSN-57, as indicated by first_snapshot_sequence_num. A saída desta transação também mostra que a cadeia de versões máxima atravessada para uma linha é 1, tendo atravessado uma média de 1 versão para cada linha que é acessada.The output for this transaction also shows the maximum version chain that is traversed for a row is 1 and has traversed an average of 1 version for each row that is accessed. Isso significa que as transações XSN-57, XSN-58 e XSN-60 não modificaram filas e foram confirmadas.This means that transactions XSN-57, XSN-58, and XSN-60 have not modified rows and committed.

  • XSN-60: Isso é a segunda transação sendo executada em isolamento de instantâneo.XSN-60: This is the second transaction running under snapshot isolation. A saída mostra as mesmas informações de XSN-59.The output shows the same information as XSN-59.

Consulte tambémSee Also

SET TRANSACTION ISOLATION LEVEL (Transact-SQL) SET TRANSACTION ISOLATION LEVEL (Transact-SQL)
Exibições e funções de gerenciamento dinâmico (Transact-SQL) Dynamic Management Views and Functions (Transact-SQL)
Funções e exibições de gerenciamento dinâmico relacionadas à transação (Transact-SQL)Transaction Related Dynamic Management Views and Functions (Transact-SQL)