Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como retornar o valor de rowversion atual para um banco de dados SQL Server (exemplo T-SQL)


Você pode usar o @@DBTS função para obter a versão de linha atual de um determinado banco de dados no SQL Server. Mais especificamente, ele retorna o último usado versão de linha valor do banco de dados atual.


Exemplo 1 – Uso básico


Para usar o @@DBTS função, basta selecioná-la dentro de um SELECT demonstração.

Assim:
SELECT @@DBTS;

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

Exemplo 2 – Bancos de dados diferentes


Conforme mencionado, a versão de linha valor é específico para cada banco de dados. Portanto, você precisa ter certeza de que está no banco de dados correto.

Segue um exemplo para demonstrar:
USE Music;
SELECT @@DBTS AS "Music rowversion";

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

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

Onde este valor é usado?


A versão de linha value é usado por colunas que têm uma rowversion ou carimbo de data e hora tipo de dados. Essas colunas são atualizadas automaticamente com um número exclusivo, com base no valor incrementado de rowversion , sempre que ocorrer uma inserção ou atualização.

Usando o exemplo acima, se eu inserir ou atualizar uma linha no Music banco de dados, e essa linha tem uma rowversion coluna, o valor dessa coluna provavelmente será definido como 0x00000000000007D1 (ou seja, 0x00000000000007D0 incrementado em 1). Nesta fase, se eu usar @@DBTS contra esse banco de dados, ele retornaria 0x00000000000007D1 (porque essa é a última contagem de linhas usada valor).

Se eu atualizar essa linha, sua rowversion coluna se tornará 0x00000000000007D2 . Isso é verdade, mesmo que a operação de atualização não tenha alterado nenhum dado. Desta vez, se eu executar @@DBTS ele retornaria 0x00000000000007D2 .

Para obter um exemplo que demonstra isso, consulte O que é “rowversion” no SQL Server.

O carimbo de data e hora tipo de dados é na verdade um sinônimo para rowversion , então o valor retornado por @@DBTS reflete a versão de linha atual valor se foi incrementado por uma rowversion coluna ou um carimbo de data e hora coluna.

Observe também que carimbo de data e hora é um dos quatro tipos de dados preteridos que estão no modo de manutenção e podem ser removidos em uma versão futura do SQL Server. Portanto, você deve usar rowversion em vez de carimbo de data e hora em novos trabalhos de desenvolvimento. Você também deve planejar a modificação de aplicativos que atualmente usam timestamp .