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.