MIN_ACTIVE_ROWVERSION (Transact-SQL)
Возвращает наименьшее активное значение rowversion в текущей базе данных.Значение rowversion является активным, если оно используется в незафиксированной транзакции.Дополнительные сведения см. в разделе rowversion (Transact-SQL).
Примечание
Тип данных rowversion также известен как timestamp.
Область применения: SQL Server (от SQL Server 2008 до текущей версии), База данных SQL Azure. |
Cинтаксические обозначения в Transact-SQL
Синтаксис
MIN_ACTIVE_ROWVERSION
Типы возвращаемых значений
Возвращает значение binary(8).
Заметки
MIN_ACTIVE_ROWVERSION — это недетерминированная функция, возвращающая наименьшее активное значение rowversion в текущей базе данных.Новое значение rowversion обычно формируется, когда в таблице, содержащей столбец с типом rowversion, производится операция вставки или обновления.Если в базе данных не существует активных значений, то функция MIN_ACTIVE_ROWVERSION возвращает то же значение, что и @@DBTS + 1.
Функция MIN_ACTIVE_ROWVERSION полезна, например, когда при синхронизации данных значения rowversion используются для группирования наборов изменений.Если приложение использует функцию @@DBTS, а не MIN_ACTIVE_ROWVERSION, могут быть пропущены изменения, произведенные при синхронизации.
Функция MIN_ACTIVE_ROWVERSION не затрагивается изменениями на уровнях изоляции транзакции.
Примеры
В следующем примере значения rowversion возвращаются с помощью функций MIN_ACTIVE_ROWVERSION и @@DBTS.Обратите внимание, что при отсутствии в базе данных активных транзакций эти значения будут другими.
-- 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