Você pode usar o T-SQL para retornar uma lista de colunas de identidade em um banco de dados no SQL Server.
Você pode fazer isso usando o
sys.identity_columns
visualização do catálogo do sistema. Exemplo 1 – Uso básico
Aqui está um exemplo para demonstrar.
USE Test; SELECT OBJECT_NAME(object_id) AS [object], name, seed_value, increment_value, last_value, is_not_for_replication FROM sys.identity_columns;
Resultado:
+---------------------------+------------------+--------------+-------------------+--------------+--------------------------+ | object | name | seed_value | increment_value | last_value | is_not_for_replication | |---------------------------+------------------+--------------+-------------------+--------------+--------------------------| | ConstraintTest | ConstraintTestId | 1 | 1 | 17 | 0 | | sqlagent_job_history | instance_id | 1 | 1 | NULL | 0 | | sqlagent_jobsteps_logs | log_id | 1 | 1 | NULL | 0 | | Cats | id | 1 | 1 | 2 | 0 | | Dogs | id | 1 | 1 | 1 | 0 | | t1 | id | 1 | 1 | 2 | 0 | | t2 | id | 150 | 10 | 160 | 0 | | scope_identity_test | id | 1 | 1 | 3 | 0 | | Event | EventId | 1 | 1 | NULL | 0 | | Scoreboard | ScoreId | 1 | 1 | 8 | 0 | | Pets | PetId | 1 | 1 | 5 | 0 | | BestFriends | pet_id | 101 | 10 | 121 | 0 | | Cities | CityId | 150 | 10 | 180 | 0 | | Colors | ColorId | 1 | 1 | 6 | 0 | | queue_messages_1977058079 | queuing_order | 0 | 1 | NULL | 0 | | t6 | id | 1 | 1 | 1 | 0 | | t7 | id | 100 | 1 | 100 | 0 | | queue_messages_2009058193 | queuing_order | 0 | 1 | NULL | 0 | | queue_messages_2041058307 | queuing_order | 0 | 1 | NULL | 0 | +---------------------------+------------------+--------------+-------------------+--------------+--------------------------+
Eu usei meu
Test
banco de dados para este exemplo. Escolhi este porque já criei colunas de identidade com vários valores de incremento de semente. Neste exemplo eu usei o
OBJECT_NAME()
função para obter o nome do objeto do object_id
coluna. Neste caso, é o nome da tabela. Em outras palavras, a primeira coluna lista o nome da tabela e a segunda coluna lista a coluna de identidade. Exemplo 2 – Listar todas as colunas
No exemplo anterior, retornei apenas um punhado de colunas. Isso ocorre porque
sys.identity_columns
retorna muitas colunas. Neste exemplo, retorno apenas uma coluna de identidade (ou seja, uma linha), mas retorno todas as colunas dessa linha. Eu uso saída vertical ao exibir os resultados para que você não seja forçado a rolar para os lados.
SELECT * FROM sys.identity_columns WHERE OBJECT_NAME(object_id) = 'Cities';
Resultado (usando saída vertical):
object_id | 1970106059 name | CityId column_id | 1 system_type_id | 56 user_type_id | 56 max_length | 4 precision | 10 scale | 0 collation_name | NULL is_nullable | 0 is_ansi_padded | 0 is_rowguidcol | 0 is_identity | 1 is_filestream | 0 is_replicated | 0 is_non_sql_subscribed | 0 is_merge_published | 0 is_dts_replicated | 0 is_xml_document | 0 xml_collection_id | 0 default_object_id | 0 rule_object_id | 0 seed_value | 150 increment_value | 10 last_value | 180 is_not_for_replication | 0 is_computed | 0 is_sparse | 0 is_column_set | 0 generated_always_type | 0 generated_always_type_desc | NOT_APPLICABLE encryption_type | NULL encryption_type_desc | NULL encryption_algorithm_name | NULL column_encryption_key_id | NULL column_encryption_key_database_name | NULL is_hidden | 0 is_masked | 0 graph_type | NULL graph_type_desc | NULL
A maioria dessas colunas é herdada de
sys.columns
, mas alguns são exclusivos para sys.identity columns
. Para obter uma descrição detalhada dessas colunas, consulte a documentação da Microsoft para sys.columns
e sys.identity columns
. Incluindo tabelas e esquemas
Você deve ter notado que esses exemplos não incluem o esquema no conjunto de resultados. Consulte Incluindo tabelas e esquemas ao listar as colunas de identidade se precisar retornar o esquema. Esse artigo também inclui um exemplo de remoção de tabelas internas dos resultados.