Можете да използвате @@DBTS
функция, за да получите текущата версия на реда на дадена база данни в SQL Server. По-конкретно, връща последно използвано версия на ред стойност на текущата база данни.
Пример 1 – Основна употреба
За да използвате @@DBTS
функция, просто я изберете в SELECT
изявление.
Като това:
SELECT @@DBTS;
Резултат:
+--------------------+ | (No column name) | |--------------------| | 0x0000000000000FA0 | +--------------------+
Пример 2 – Различни бази данни
Както споменахме, версията на ред стойността е специфична за всяка база данни. Следователно, трябва да се уверите, че сте в правилната база данни.
Ето пример за демонстрация:
USE Music; SELECT @@DBTS AS "Music rowversion"; Use WideWorldImportersDW; SELECT @@DBTS AS "WideWorldImportersDW rowversion";
Резултат:
Changed database context to 'Music'. +--------------------+ | Music rowversion | |--------------------| | 0x00000000000007D0 | +--------------------+ (1 row affected) Changed database context to 'WideWorldImportersDW'. +-----------------------------------+ | WideWorldImportersDW rowversion | |-----------------------------------| | 0x0000000000015F90 | +-----------------------------------+ (1 row affected)
Къде се използва тази стойност?
Версията row стойност се използва от колони, които имат или версия на ред или клеймо за време тип данни. Такива колони автоматично се актуализират с уникален номер въз основа на увеличената стойност на rowversion , когато се случи вмъкване или актуализация.
Използвайки горния пример, ако вмъкна или актуализирам ред в Music
база данни и този ред има версия на ред колона, стойността на тази колона вероятно ще бъде зададена на 0x00000000000007D1
(т.е. 0x00000000000007D0
увеличено с 1). На този етап, ако трябваше да използвам @@DBTS
срещу тази база данни, той ще върне 0x00000000000007D1
(защото това е последният използван брой редове стойност).
Ако след това актуализирам този ред, неговата версия на ред колоната ще стане 0x00000000000007D2
. Това е вярно, дори ако операцията за актуализиране всъщност не промени никакви данни. Този път, ако стартирам @@DBTS
ще върне 0x00000000000007D2
.
За пример, който демонстрира това, вижте Какво е „версия на реда“ в SQL Server.
клеймото за време типът данни всъщност е синоним на версия на ред , така че стойността, върната от @@DBTS
отразява текущата версия на ред стойност дали е увеличена с версия на ред колона или клеймо за време колона.
Също така имайте предвид, че timestamp е един от четирите остарели типа данни, които са в режим на поддръжка и може да бъдат премахнати в бъдеща версия на SQL Server. Ето защо трябва да използвате rowversion вместо timestamp в нови разработки. Трябва също да планирате да модифицирате приложения, които в момента използват timestamp .