Eu estou esperando que alguém possa me apontar na direção certa sobre este. Aqui está o meu trabalho até agora.
SELECT * FROM sys.identity_columns
é uma visão do sistema que dá "last_value", mas a definição para essa visão usa uma função interna IdentityProperty(colName, 'LastValue')
- então é um beco sem saída (não puxando de uma tabela do sistema lá).
Em todos os lugares (eu procurei) na internet sugere o uso DBCC IDENT_...
de comandos para descobrir o valor, mas isso ainda me deixa no escuro sobre onde ele está realmente armazenado.
Então, cheguei a pesquisar as páginas individuais com DBCC PAGE(TestDB,1,1325,3)
meu banco de dados de teste e usar o RESEED
comando para propagar novamente entre os valores 10 e 12.
Ao fazer isso, notei os valores hexadecimais no IAM: Header
, IAM: Single Page Allocations
e IAM: Extent Alloc Status Slot 1
tudo mudou. (E percebi que eles mudam periodicamente de qualquer maneira junto com o valor bUse1 , que também muda incrementalmente por si só).
Então, outro beco sem saída e estou sem ideias. Onde mais posso pesquisar?
Estou executando o SQL Server 2014. Tenho uma sede insaciável de conhecimento interno e ainda não encontrei nada tão indescritível quanto isso. Chamou minha atenção porque, em teoria, (um valor absoluto) está armazenado em algum lugar e deve (provavelmente) ser localizável. Em minha busca para descobrir locais de dados / metadados armazenados internamente, esse valor em particular me parece particularmente elusivo. Estou supondo / esperando que alguém venha e me diga, você pode conseguir, DBCC PAGE
mas eu estava procurando no lugar errado.
Se você puder acessar o DAC ( Dedicated Administrator Console ), poderá inspecionar o valor da coluna de identidade, para
INT
colunas, observando aidtval
coluna emsys.syscolpars
.Agradeço a Martin Smith por me direcionar a essa mesa por meio desta resposta muito útil de Roi Gavish sobre uma questão relacionada aqui.
Tomemos, por exemplo, a seguinte tabela temporária:
Vamos ver o que a tabela contém:
O valor da identidade pode ser inspecionado por este código:
Para
BIGINT
colunas de identidade, precisamos expandir o tamanho de algumas variáveis usadas no código, como:Resultados para
BIGINT
: