Compartir a través de


MIN_ACTIVE_ROWVERSION (Transact-SQL)

Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance

Devuelve el valor rowversion activo más bajo de la base de datos actual. Un valor rowversion está activo si se utiliza en una transacción que no se ha confirmado todavía. Para obtener más información, consulte rowversion (Transact-SQL).

Nota:

El tipo de datos rowversion también se conoce como timestamp.

Convenciones de sintaxis de Transact-SQL

Sintaxis

MIN_ACTIVE_ROWVERSION ( ) 

Tipos de valor devuelto

Devuelve un valor binary(8).

Comentarios

MIN_ACTIVE_ROWVERSION es una función no determinista que devuelve el valor rowversion activo más bajo de la base de datos actual. Normalmente, se genera un nuevo valor rowversion cuando se realiza una inserción o una actualización en una tabla que contiene una columna de tipo rowversion. Si no hay ningún valor activo en la base de datos, MIN_ACTIVE_ROWVERSION devuelve el mismo valor que @@DBTS + 1.

MIN_ACTIVE_ROWVERSION es útil en escenarios como la sincronización de datos que usa valores rowversion para agrupar conjuntos de cambios. Si una aplicación utiliza @@DBTS en lugar de MIN_ACTIVE_ROWVERSION, es posible que se pierdan los cambios que están activos cuando se produce la sincronización.

La función MIN_ACTIVE_ROWVERSION no se ve afectada por los cambios en los niveles de aislamiento de transacciones.

Ejemplos

En el ejemplo siguiente se devuelven valores rowversion al usar MIN_ACTIVE_ROWVERSION y @@DBTS. Observe que los valores difieren cuando no hay ninguna transacción activa en la base de datos.

-- 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 también

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