Partilhar via


MIN_ACTIVE_ROWVERSION (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de dados SQL no Microsoft Fabric

Devolve o valor de rowversion ativo mais baixo na base de dados atual. Um valor de rowversion está ativo se for utilizado numa transação que ainda não foi confirmada. Para mais informações, veja rowversion (Transact-SQL).

Observação

O tipo de dado rowversion também é conhecido como carimbo temporal.

Transact-SQL convenções de sintaxe

Sintaxe

MIN_ACTIVE_ROWVERSION ( ) 

Tipos de devolução

Devolve um valor binário(8).

Observações

MIN_ACTIVE_ROWVERSION é uma função não determinística que devolve o valor de rowversion ativo mais baixo na base de dados atual. Um novo valor de rowversion é normalmente gerado quando é realizada uma inserção ou atualização numa tabela que contém uma coluna de tipo rowversion. Se não houver valores ativos na base de dados, MIN_ACTIVE_ROWVERSION devolve o mesmo valor que @@DBTS + 1.

MIN_ACTIVE_ROWVERSION é útil para cenários como a sincronização de dados, que usam valores de rowversion para agrupar conjuntos de alterações. Se uma aplicação usar @@DBTS em vez de MIN_ACTIVE_ROWVERSION, é possível perder alterações ativas quando ocorre a sincronização.

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

Examples

O exemplo seguinte devolve valores de rowversion usando MIN_ACTIVE_ROWVERSION e @@DBTS. Note que os valores diferem quando não há transações ativas na base 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  

Ver também

@@DBTS (Transact-SQL)
Rowversion (Transact-SQL)