sql >> Database >  >> RDS >> Sqlserver

De huidige rowversion-waarde voor een SQL Server-database retourneren (T-SQL-voorbeeld)

U kunt de @@DBTS . gebruiken functie om de huidige rowversion . te krijgen van een bepaalde database in SQL Server. Meer specifiek, het retourneert de laatst gebruikte rijversie waarde van de huidige database.

Voorbeeld 1 – Basisgebruik

Om de @@DBTS . te gebruiken functie, selecteer het gewoon binnen een SELECT verklaring.

Zoals dit:

SELECT @@DBTS;

Resultaat:

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

Voorbeeld 2 – Verschillende databases

Zoals gezegd, de rowversion waarde is specifiek voor elke database. Daarom moet u ervoor zorgen dat u zich in de juiste database bevindt.

Hier is een voorbeeld om te demonstreren:

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

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

Resultaat:

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

Waar wordt deze waarde gebruikt?

De rijversie waarde wordt gebruikt door kolommen die een rijversie . hebben of tijdstempel data type. Dergelijke kolommen worden automatisch bijgewerkt met een uniek nummer, gebaseerd op de verhoogde waarde van rowversion , telkens wanneer een invoeging of update plaatsvindt.

Als ik het bovenstaande voorbeeld gebruik, als ik een rij invoeg of bijwerk in de Music database, en die rij heeft een rijversie kolom, wordt de waarde van die kolom waarschijnlijk ingesteld op 0x00000000000007D1 (d.w.z. 0x00000000000007D0 verhoogd met 1). Als ik in dit stadium @@DBTS . zou gebruiken tegen die database, zou het 0x00000000000007D1 . teruggeven (want dat is de laatst gebruikte rijtelling waarde).

Als ik die rij vervolgens bijwerk, is de rijversie kolom wordt 0x00000000000007D2 . Dit is waar, zelfs als de update-bewerking geen gegevens heeft gewijzigd. Deze keer, als ik @@DBTS . gebruik het zou 0x00000000000007D2 return teruggeven .

Voor een voorbeeld dat dit aantoont, zie Wat is “rowversion” in SQL Server.

Het tijdstempel gegevenstype is eigenlijk een synoniem voor rowversion , dus de waarde die wordt geretourneerd door @@DBTS weerspiegelt de huidige rijversie waarde of het werd verhoogd met een rowversion kolom of een tijdstempel kolom.

Houd er ook rekening mee dat tijdstempel is een van de vier verouderde gegevenstypen die zich in de onderhoudsmodus bevinden en die in een toekomstige versie van SQL Server kunnen worden verwijderd. Gebruik daarom rowversion in plaats van tijdstempel bij nieuw ontwikkelingswerk. U moet ook plannen om toepassingen aan te passen die momenteel tijdstempel gebruiken .


  1. PostgreSQL, SELECTEER van max id

  2. SQLite COUNT

  3. Wat is Azure Data Studio?

  4. KIES * UIT meerdere tabellen. MySQL