U kunt T-SQL gebruiken om een lijst met identiteitskolommen in een database in SQL Server te retourneren.
U kunt dit doen met behulp van de sys.identity_columns
systeemcatalogusweergave.
Voorbeeld 1 – Basisgebruik
Hier is een voorbeeld om te demonstreren.
USE Test; SELECT OBJECT_NAME(object_id) AS [object], name, seed_value, increment_value, last_value, is_not_for_replication FROM sys.identity_columns;
Resultaat:
+---------------------------+------------------+--------------+-------------------+--------------+--------------------------+ | 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 | +---------------------------+------------------+--------------+-------------------+--------------+--------------------------+
Ik heb mijn Test
. gebruikt database voor dit voorbeeld. Ik heb deze gekozen omdat ik eerder identiteitskolommen heb gemaakt met verschillende seed-incrementwaarden.
In dit voorbeeld gebruikte ik de OBJECT_NAME()
functie om de naam van het object te halen uit de object_id
kolom. In dit geval is dat de naam van de tabel. Met andere woorden, in de eerste kolom staat de tabelnaam en in de tweede kolom de identiteitskolom.
Voorbeeld 2 – Lijst van alle kolommen
In het vorige voorbeeld heb ik slechts een handvol kolommen geretourneerd. Dit komt omdat sys.identity_columns
geeft veel kolommen terug.
In dit voorbeeld retourneer ik slechts één identiteitskolom (d.w.z. één rij), maar ik retourneer alle kolommen voor die rij. Ik gebruik verticale uitvoer bij het weergeven van de resultaten, zodat u niet zijwaarts hoeft te scrollen.
SELECT * FROM sys.identity_columns WHERE OBJECT_NAME(object_id) = 'Cities';
Resultaat (met verticale uitvoer):
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 meeste van deze kolommen zijn overgenomen van sys.columns
, maar sommige zijn uniek voor sys.identity columns
. Voor een gedetailleerde beschrijving van deze kolommen, zie de Microsoft-documentatie voor sys.columns
en sys.identity columns
.
Inclusief tabellen en schema's
Het is je misschien opgevallen dat deze voorbeelden het schema niet in de resultatenset bevatten. Zie Tabellen en schema's opnemen bij het weergeven van de identiteitskolommen als u het schema moet retourneren. Dat artikel bevat ook een voorbeeld van het verwijderen van interne tabellen uit de resultaten.