Du kan använda @@DBTS
funktion för att få den aktuella rowversionen av en given databas i SQL Server. Mer specifikt returnerar den den senast använda rowversion värdet för den aktuella databasen.
Exempel 1 – Grundläggande användning
För att använda @@DBTS
funktionen, välj den helt enkelt inom en SELECT
uttalande.
Så här:
SELECT @@DBTS;
Resultat:
+--------------------+ | (No column name) | |--------------------| | 0x0000000000000FA0 | +--------------------+
Exempel 2 – Olika databaser
Som nämnts, rowversionen värdet är specifikt för varje databas. Därför måste du se till att du är i rätt databas.
Här är ett exempel att visa:
USE Music; SELECT @@DBTS AS "Music rowversion"; Use WideWorldImportersDW; SELECT @@DBTS AS "WideWorldImportersDW rowversion";
Resultat:
Changed database context to 'Music'. +--------------------+ | Music rowversion | |--------------------| | 0x00000000000007D0 | +--------------------+ (1 row affected) Changed database context to 'WideWorldImportersDW'. +-----------------------------------+ | WideWorldImportersDW rowversion | |-----------------------------------| | 0x0000000000015F90 | +-----------------------------------+ (1 row affected)
Var används detta värde?
rowversionen värde används av kolumner som antingen har en radversion eller tidsstämpel data typ. Sådana kolumner uppdateras automatiskt med ett unikt nummer, baserat på det ökade värdet för rowversion , närhelst en infogning eller uppdatering sker.
Med exemplet ovan, om jag infogar eller uppdaterar en rad i Music
databas, och den raden har en rowversion kolumnen, kommer kolumnens värde förmodligen att ställas in på 0x00000000000007D1
(dvs. 0x00000000000007D0
ökas med 1). I det här skedet, om jag skulle använda @@DBTS
mot den databasen skulle den returnera 0x00000000000007D1
(eftersom det är det senast använda radantal värde).
Om jag sedan uppdaterar den raden är dess rowversion kolumnen blir 0x00000000000007D2
. Detta är sant, även om uppdateringen faktiskt inte ändrade några data. Den här gången, om jag kör @@DBTS
det skulle returnera 0x00000000000007D2
.
För ett exempel som visar detta, se Vad är "rowversion" i SQL Server.
tidsstämpeln datatyp är faktiskt en synonym för rowversion , så värdet som returneras av @@DBTS
återspeglar den aktuella rowversionen värde om det ökades med en radversion kolumn eller en tidsstämpel kolumn.
Observera också att tidsstämpel är en av fyra föråldrade datatyper som är i underhållsläge och kan tas bort i en framtida version av SQL Server. Därför bör du använda rowversion istället för tidsstämpel i nytt utvecklingsarbete. Du bör också planera för att ändra applikationer som för närvarande använder tidsstämpel .