MIN_ACTIVE_ROWVERSION (Transact-SQL)
Restituisce il valore rowversion attivo più basso nel database corrente.Un valore rowversion è attivo se viene usato in una transazione di cui non è ancora stato eseguito il commit.Per altre informazioni, vedere rowversion (Transact-SQL).
Nota
Il tipo di dati rowversion è anche noto come timestamp.
Si applica a: SQL Server (da SQL Server 2008 alla versione corrente), Database SQL di Azure. |
Convenzioni della sintassi Transact-SQL
Sintassi
MIN_ACTIVE_ROWVERSION
Tipi restituiti
Restituisce un valore binary(8).
Note
MIN_ACTIVE_ROWVERSION è una funzione non deterministica che restituisce il valore rowversion attivo più basso nel database corrente.Quando viene eseguita un'istruzione INSERT o UPDATE in una tabella contenente una colonna di tipo rowversion, viene solitamente generato un nuovo valore rowversion.Se nel database non vi sono valori attivi, MIN_ACTIVE_ROWVERSION restituisce lo stesso valore di @@DBTS + 1.
MIN_ACTIVE_ROWVERSION è utile in scenari come la sincronizzazione dei dati che usano valori rowversion per raggruppare set di modifiche.Se un'applicazione usa @@DBTS anziché MIN_ACTIVE_ROWVERSION, potrebbero andare perse modifiche attive al momento della sincronizzazione.
La funzione MIN_ACTIVE_ROWVERSION non è interessata dalle modifiche apportate ai livelli di isolamento delle transazioni.
Esempi
Nell'esempio seguente vengono restituiti valori rowversion usando MIN_ACTIVE_ROWVERSION e @@DBTS.Si noti che i valori sono diversi quando non vi sono transazioni attive nel database.
-- 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