sql >> Databáze >  >> RDS >> Sqlserver

Jak vrátit aktuální hodnotu rowversion pro databázi SQL Server (příklad T-SQL)

Můžete použít @@DBTS k získání aktuální verze řádku dané databáze na SQL Serveru. Přesněji řečeno, vrací naposledy použité rowversion hodnotu aktuální databáze.

Příklad 1 – Základní použití

Chcete-li použít @@DBTS jednoduše ji vyberte v SELECT prohlášení.

Takhle:

SELECT @@DBTS;

Výsledek:

+--------------------+
| (No column name)   |
|--------------------|
| 0x0000000000000FA0 |
+--------------------+

Příklad 2 – Různé databáze

Jak již bylo zmíněno, rowversion hodnota je specifická pro každou databázi. Proto se musíte ujistit, že jste ve správné databázi.

Zde je příklad k demonstraci:

USE Music;
SELECT @@DBTS AS "Music rowversion";

Use WideWorldImportersDW;
SELECT @@DBTS AS "WideWorldImportersDW rowversion";

Výsledek:

Changed database context to 'Music'.
+--------------------+
| Music rowversion   |
|--------------------|
| 0x00000000000007D0 |
+--------------------+
(1 row affected)
Changed database context to 'WideWorldImportersDW'.
+-----------------------------------+
| WideWorldImportersDW rowversion   |
|-----------------------------------|
| 0x0000000000015F90                |
+-----------------------------------+
(1 row affected)

Kde se tato hodnota používá?

rowversion hodnotu používají sloupce, které mají buď rowversion nebo časové razítko datový typ. Tyto sloupce jsou automaticky aktualizovány jedinečným číslem na základě zvýšené hodnoty rowversion , kdykoli dojde k vložení nebo aktualizaci.

Pokud použiji výše uvedený příklad, pokud vložím nebo aktualizuji řádek v Music databáze a tento řádek má verzi řádku sloupec, hodnota tohoto sloupce bude pravděpodobně nastavena na 0x00000000000007D1 (tj. 0x00000000000007D0 zvýšeno o 1). V této fázi, pokud bych měl použít @@DBTS proti této databázi vrátí 0x00000000000007D1 (protože toto je naposledy použitý počet řádků hodnota).

Pokud pak aktualizuji tento řádek, jeho verze řádku sloupec se změní na 0x00000000000007D2 . To platí, i když operace aktualizace ve skutečnosti nezměnila žádná data. Tentokrát, pokud spustím @@DBTS vrátí to 0x00000000000007D2 .

Příklad, který to demonstruje, najdete v tématu Co je „rowversion“ na serveru SQL Server.

Časové razítko datový typ je ve skutečnosti synonymem pro rowversion , tedy hodnotu vrácenou @@DBTS odráží aktuální rowversion hodnotu, zda byla zvýšena o rowversion sloupec nebo časové razítko sloupec.

Všimněte si také, že časové razítko je jedním ze čtyř zastaralých datových typů, které jsou v režimu údržby a mohou být odebrány v budoucí verzi SQL Server. Proto byste měli použít rowversion místo časového razítka v nových vývojových pracích. Měli byste také naplánovat úpravu aplikací, které aktuálně používají časové razítko .


  1. ROW_NUMBER v SQL – Vyberte Nejlepší příklad v SQL a SQL Server

  2. Vytvořte tabulku v SQL Server 2017

  3. Vydělávejte peníze nevyužitými věcmi:Sdílený ekonomický datový model

  4. Získat ŘÁDKY jako SLOUPCE (dynamický dotaz PIVOT pro SQL Server)