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

Listar todas as colunas de identidade em um banco de dados SQL Server:sys.identity_columns


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.