Compartilhar via


MIN_ACTIVE_ROWVERSION (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure

Retorna o valor rowversion ativo mais baixo no banco de dados atual. Um valor rowversion ficará ativo se for usado em uma transação ainda não confirmada. Para obter mais informações, confira rowversion (Transact-SQL).

Observação

O tipo de dados rowversion também é conhecido como timestamp.

Convenções de sintaxe de Transact-SQL

Sintaxe

MIN_ACTIVE_ROWVERSION ( ) 

Tipos de retorno

Retorna um valor binary(8).

Comentários

MIN_ACTIVE_ROWVERSION é uma função não determinística que retorna o valor de rowversion ativo mais baixo no banco de dados atual. Um novo valor rowversion normalmente é gerado quando uma inserção ou atualização é executada em uma tabela que contém uma coluna do tipo rowversion. Se não houver nenhum valor ativo no banco de dados, MIN_ACTIVE_ROWVERSION retornará o mesmo valor como @@DBTS + 1.

MIN_ACTIVE_ROWVERSION é útil para cenários como sincronização de dados que usam valores de rowversion para agrupar conjuntos de alterações. Se um aplicativo usar @@DBTS em vez de MIN_ACTIVE_ROWVERSION, as alterações que estiverem ativas quando a sincronização ocorrer poderão ser perdidas.

A função MIN_ACTIVE_ROWVERSION não é afetada pelas alterações nos níveis de isolamento da transação.

Exemplos

O exemplo a seguir retorna valores de rowversion usando MIN_ACTIVE_ROWVERSION e @@DBTS. Observe que os valores diferem quando não há nenhuma transação ativa no banco de dados.

-- Create a table that has a ROWVERSION column in it.  
CREATE TABLE RowVersionTestTable (rv ROWVERSION)  
GO  
  
-- Print the current values for the database.  
PRINT ''  
PRINT 'DBTS'  
PRINT @@DBTS  
PRINT 'MIN_ACTIVE_ROWVERSION'  
PRINT MIN_ACTIVE_ROWVERSION()   
GO  
---------------- Results ----------------  
--DBTS  
--0x00000000000007E2  
--MIN_ACTIVE_ROWVERSION  
--0x00000000000007E3  
  
-- Insert a row.  
INSERT INTO RowVersionTestTable VALUES (DEFAULT)  
SELECT * FROM RowVersionTestTable  
GO  
---------------- Results ----------------  
--rv  
--0x00000000000007E3  
  
-- Print the current values for the database.  
PRINT ''  
PRINT 'DBTS'  
PRINT @@DBTS  
PRINT 'MIN_ACTIVE_ROWVERSION'  
PRINT MIN_ACTIVE_ROWVERSION()  
GO  
---------------- Results ----------------  
--DBTS  
--0x00000000000007E3  
--MIN_ACTIVE_ROWVERSION  
--0x00000000000007E4  
  
-- Insert a new row inside a transaction but do not commit.  
BEGIN TRAN  
INSERT INTO RowVersionTestTable VALUES (DEFAULT)  
SELECT * FROM RowVersionTestTable  
GO  
---------------- Results ----------------  
--rv  
--0x00000000000007E3  
--0x00000000000007E4  
  
-- Print the current values for the database.  
PRINT ''  
PRINT 'DBTS'  
PRINT @@DBTS  
PRINT 'MIN_ACTIVE_ROWVERSION'  
PRINT MIN_ACTIVE_ROWVERSION()   
GO  
---------------- Results ----------------  
--DBTS  
--0x00000000000007E4  
--MIN_ACTIVE_ROWVERSION  
--0x00000000000007E4  
  
-- Commit the transaction.  
COMMIT  
GO  
  
-- Print the current values for the database.  
PRINT ''  
PRINT 'DBTS'  
PRINT @@DBTS  
PRINT 'MIN_ACTIVE_ROWVERSION'  
PRINT MIN_ACTIVE_ROWVERSION()  
GO  
---------------- Results ----------------  
--DBTS  
--0x00000000000007E4  
--MIN_ACTIVE_ROWVERSION  
--0x00000000000007E5  

Consulte Também

@@DBTS (Transact-SQL)
rowversion (Transact-SQL)