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