Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Répertorier toutes les colonnes d'identité dans une base de données SQL Server :sys.identity_columns

Vous pouvez utiliser T-SQL pour renvoyer une liste de colonnes d'identité dans une base de données dans SQL Server.

Vous pouvez le faire en utilisant le sys.identity_columns vue du catalogue système.

Exemple 1 - Utilisation de base

Voici un exemple pour illustrer.

USE Test;
SELECT 
  OBJECT_NAME(object_id) AS [object],
  name,
  seed_value,
  increment_value,
  last_value,
  is_not_for_replication
FROM sys.identity_columns;

Résultat :

+---------------------------+------------------+--------------+-------------------+--------------+--------------------------+
| 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                        |
+---------------------------+------------------+--------------+-------------------+--------------+--------------------------+

J'ai utilisé mon Test base de données pour cet exemple. J'ai choisi celui-ci parce que j'ai déjà créé des colonnes d'identité avec différentes valeurs d'incrément de départ.

Dans cet exemple, j'ai utilisé le OBJECT_NAME() fonction pour obtenir le nom de l'objet à partir de object_id colonne. Dans ce cas, c'est le nom de la table. Donc, en d'autres termes, la première colonne répertorie le nom de la table et la deuxième colonne répertorie la colonne d'identité.

Exemple 2 – Lister toutes les colonnes

Dans l'exemple précédent, je n'ai renvoyé qu'une poignée de colonnes. C'est parce que sys.identity_columns renvoie beaucoup de colonnes.

Dans cet exemple, je renvoie une seule colonne d'identité (c'est-à-dire une ligne), mais je renvoie toutes les colonnes de cette ligne. J'utilise la sortie verticale lors de l'affichage des résultats afin que vous ne soyez pas obligé de faire défiler latéralement.

SELECT *
FROM sys.identity_columns
WHERE OBJECT_NAME(object_id) = 'Cities';

Résultat (en utilisant la sortie verticale) :

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

La plupart de ces colonnes sont héritées de sys.columns , mais certaines sont propres aux sys.identity columns . Pour une description détaillée de ces colonnes, consultez la documentation Microsoft pour sys.columns et sys.identity columns .

Y compris les tableaux et les schémas

Vous avez peut-être remarqué que ces exemples n'incluent pas le schéma dans le jeu de résultats. Voir Inclure des tables et des schémas lors de la liste des colonnes d'identité si vous devez renvoyer le schéma. Cet article comprend également un exemple de suppression de tables internes des résultats.