Compartir a través de


MIN_ACTIVE_ROWVERSION (Transact-SQL)

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, vea rowversion (Transact-SQL).

[!NOTA]

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

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

MIN_ACTIVE_ROWVERSION

Tipos de valor devueltos

Devuelve un valor binary(8).

Notas

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 utiliza 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.

Ejemplos

En el ejemplo siguiente se devuelven valores rowversion utilizando 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