Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come restituire il valore rowversion corrente per un database di SQL Server (esempio T-SQL)

Puoi usare il @@DBTS funzione per ottenere la versione di riga corrente di un determinato database in SQL Server. Più precisamente, restituisce l'ultimo utilizzato versione riga valore del database corrente.

Esempio 1 – Utilizzo di base

Per utilizzare il @@DBTS funzione, selezionala semplicemente all'interno di un SELECT dichiarazione.

In questo modo:

SELECT @@DBTS;

Risultato:

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

Esempio 2 – Database diversi

Come accennato, la rowversion il valore è specifico per ogni database. Pertanto, devi assicurarti di essere nel database giusto.

Ecco un esempio da dimostrare:

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

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

Risultato:

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

Dove viene utilizzato questo valore?

La versione di riga value viene utilizzato dalle colonne che hanno una rowversion o indicatore orario tipo di dati. Tali colonne vengono aggiornate automaticamente con un numero univoco, in base al valore incrementato di rowversion , ogni volta che si verifica un inserimento o un aggiornamento.

Utilizzando l'esempio sopra, se inserisco o aggiorno una riga in Music database e quella riga ha una rowversion colonna, il valore di quella colonna sarà probabilmente impostato su 0x00000000000007D1 (cioè 0x00000000000007D0 incrementato di 1). A questo punto, se dovessi usare @@DBTS contro quel database, restituirebbe 0x00000000000007D1 (perché è l'ultimo numero di righe utilizzato valore).

Se poi aggiorno quella riga, è rowversion la colonna diventerà 0x00000000000007D2 . Questo è vero, anche se l'operazione di aggiornamento non ha effettivamente modificato alcun dato. Questa volta, se eseguo @@DBTS restituirebbe 0x00000000000007D2 .

Per un esempio che lo dimostra, vedere Che cos'è "rowversion" in SQL Server.

Il indicatore orario tipo di dati è in realtà un sinonimo di rowversion , quindi il valore restituito da @@DBTS riflette la versione di riga corrente valore se è stato incrementato di una rowversion colonna o un timestamp colonna.

Tieni inoltre presente che timestamp è uno dei quattro tipi di dati deprecati che sono in modalità di manutenzione e potrebbero essere rimossi in una versione futura di SQL Server. Pertanto dovresti utilizzare rowversion invece di timestamp nel nuovo lavoro di sviluppo. Dovresti anche pianificare la modifica delle applicazioni che attualmente utilizzano timestamp .