Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment renvoyer la valeur actuelle de rowversion pour une base de données SQL Server (exemple T-SQL)

Vous pouvez utiliser le @@DBTS fonction pour obtenir la rowversion actuelle d'une base de données donnée dans SQL Server. Plus précisément, il renvoie le dernier utilisé version de ligne valeur de la base de données courante.

Exemple 1 - Utilisation de base

Pour utiliser le @@DBTS fonction, sélectionnez-la simplement dans un SELECT déclaration.

Comme ceci :

SELECT @@DBTS;

Résultat :

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

Exemple 2 – Différentes bases de données

Comme mentionné, la rowversion La valeur est spécifique à chaque base de données. Par conséquent, vous devez vous assurer que vous êtes dans la bonne base de données.

Voici un exemple pour illustrer :

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

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

Résultat :

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

Où cette valeur est-elle utilisée ?

La version de ligne la valeur est utilisée par les colonnes qui ont soit une rowversion ou horodatage Type de données. Ces colonnes sont automatiquement mises à jour avec un numéro unique, basé sur la valeur incrémentée de rowversion , chaque fois qu'une insertion ou une mise à jour se produit.

En utilisant l'exemple ci-dessus, si j'insère ou mets à jour une ligne dans le champ Music base de données, et cette ligne a une rowversion colonne, la valeur de cette colonne sera probablement définie sur 0x00000000000007D1 (c'est-à-dire 0x00000000000007D0 incrémenté de 1). A ce stade, si je devais utiliser @@DBTS contre cette base de données, il renverrait 0x00000000000007D1 (parce que c'est le dernier rowcount utilisé valeur).

Si je mets ensuite à jour cette ligne, sa rowversion la colonne deviendra 0x00000000000007D2 . Cela est vrai, même si l'opération de mise à jour n'a réellement modifié aucune donnée. Cette fois, si je lance @@DBTS il renverrait 0x00000000000007D2 .

Pour un exemple qui illustre cela, consultez Qu'est-ce que « rowversion » dans SQL Server.

L'horodatage le type de données est en fait un synonyme de rowversion , donc la valeur retournée par @@DBTS reflète la rowversion actuelle valeur si elle a été incrémentée par une rowversion colonne ou un horodatage colonne.

Notez également que horodatage est l'un des quatre types de données obsolètes qui sont en mode de maintenance et peuvent être supprimés dans une future version de SQL Server. Par conséquent, vous devez utiliser rowversion au lieu de horodatage dans de nouveaux travaux de développement. Vous devez également prévoir de modifier les applications qui utilisent actuellement l'horodatage .