Du kan använda T-SQL för att returnera en lista med identitetskolumner i en databas i SQL Server.
Du kan göra detta med hjälp av sys.identity_columns
systemkatalogvy.
Exempel 1 – Grundläggande användning
Här är ett exempel att visa.
USE Test; SELECT OBJECT_NAME(object_id) AS [object], name, seed_value, increment_value, last_value, is_not_for_replication FROM sys.identity_columns;
Resultat:
+---------------------------+------------------+--------------+-------------------+--------------+--------------------------+ | 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 | +---------------------------+------------------+--------------+-------------------+--------------+--------------------------+
Jag använde mitt Test
databas för detta exempel. Jag valde den här eftersom jag tidigare har skapat identitetskolumner med olika fröökningsvärden.
I det här exemplet använde jag OBJECT_NAME()
funktion för att hämta objektets namn från object_id
kolumn. I det här fallet är det tabellnamnet. Så med andra ord, den första kolumnen visar tabellnamnet, och den andra kolumnen visar identitetskolumnen.
Exempel 2 – Lista alla kolumner
I det föregående exemplet returnerade jag bara en handfull kolumner. Detta beror på att sys.identity_columns
returnerar många kolumner.
I det här exemplet returnerar jag bara en identitetskolumn (dvs en rad), men jag returnerar alla kolumner för den raden. Jag använder vertikal utmatning när jag visar resultaten så att du inte tvingas rulla i sidled.
SELECT * FROM sys.identity_columns WHERE OBJECT_NAME(object_id) = 'Cities';
Resultat (med vertikal utdata):
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
De flesta av dessa kolumner ärvs från sys.columns
, men vissa är unika för sys.identity columns
. För en detaljerad beskrivning av dessa kolumner, se Microsofts dokumentation för sys.columns
och sys.identity columns
.
Inklusive tabeller och scheman
Du kanske har märkt att dessa exempel inte inkluderar schemat i resultatuppsättningen. Se Inkludera tabeller och scheman när du listar identitetskolumnerna om du behöver returnera schemat. Den artikeln innehåller också ett exempel på att ta bort interna tabeller från resultaten.