È possibile utilizzare T-SQL per restituire un elenco di colonne di identità in un database in SQL Server.
Puoi farlo usando sys.identity_columns
vista catalogo di sistema.
Esempio 1 – Utilizzo di base
Ecco un esempio da dimostrare.
USE Test; SELECT OBJECT_NAME(object_id) AS [object], name, seed_value, increment_value, last_value, is_not_for_replication FROM sys.identity_columns;
Risultato:
+---------------------------+------------------+--------------+-------------------+--------------+--------------------------+ | 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 | +---------------------------+------------------+--------------+-------------------+--------------+--------------------------+
Ho usato il mio Test
database per questo esempio. Ho scelto questo perché in precedenza ho creato colonne di identità con vari valori di incremento del seme.
In questo esempio ho usato OBJECT_NAME()
funzione per ottenere il nome dell'oggetto da object_id
colonna. In questo caso è il nome della tabella. Quindi, in altre parole, la prima colonna elenca il nome della tabella e la seconda colonna elenca la colonna Identity.
Esempio 2 – Elenca tutte le colonne
Nell'esempio precedente ho restituito solo una manciata di colonne. Questo perché sys.identity_columns
restituisce molte colonne.
In questo esempio restituisco solo una colonna di identità (cioè una riga), ma restituisco tutte le colonne per quella riga. Uso l'output verticale quando visualizzo i risultati in modo da non essere costretto a scorrere lateralmente.
SELECT * FROM sys.identity_columns WHERE OBJECT_NAME(object_id) = 'Cities';
Risultato (usando l'output 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 maggior parte di queste colonne viene ereditata da sys.columns
, ma alcuni sono univoci per le sys.identity columns
. Per una descrizione dettagliata di queste colonne, consulta la documentazione Microsoft per sys.columns
e sys.identity columns
.
Compresi tabelle e schemi
Potresti aver notato che questi esempi non includono lo schema nel set di risultati. Vedere Inclusione di tabelle e schemi nell'elenco delle colonne identità se è necessario restituire lo schema. Tale articolo include anche un esempio di rimozione delle tabelle interne dai risultati.