Du kan bruge T-SQL til at returnere en liste over identitetskolonner i en database i SQL Server.
Du kan gøre dette ved at bruge sys.identity_columns
systemkatalogvisning.
Eksempel 1 – Grundlæggende brug
Her er et eksempel til at demonstrere.
USE Test;SELECT OBJECT_NAME(object_id) AS [object], name, seed_value, increment_value, last_value, is_not_for_replicationFROM sys.identity_columns;
Resultat:
+-----------------------------+------------------------ +--------------+--------------------+-------- +--------------------------------+| objekt | navn | frøværdi | stigningsværdi | sidste_værdi | er_ikke_til_replikering ||--------------------------------+------------------+ --------------+--------------------+-----------+ --------------------------|| ConstraintTest | ConstraintTestId | 1 | 1 | 17 | 0 || sqlagent_job_historie | instans_id | 1 | 1 | NULL | 0 || sqlagent_jobsteps_logs | log_id | 1 | 1 | NULL | 0 || Katte | id | 1 | 1 | 2 | 0 || Hunde | 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 || Begivenhed | EventId | 1 | 1 | NULL | 0 || Resultattavle | ScoreId | 1 | 1 | 8 | 0 || Kæledyr | PetId | 1 | 1 | 5 | 0 || Bedste venner | pet_id | 101 | 10 | 121 | 0 || Byer | CityId | 150 | 10 | 180 | 0 || Farver | ColorId | 1 | 1 | 6 | 0 || købeskeder_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 |+----------------------------+------------------------+ --------------+--------------------+-----------+ --------------------------+
Jeg brugte min Test
database for dette eksempel. Jeg valgte denne, fordi jeg tidligere har oprettet identitetskolonner med forskellige seed-stigningsværdier.
I dette eksempel brugte jeg OBJECT_NAME()
funktion for at hente objektets navn fra object_id
kolonne. I dette tilfælde er det tabellens navn. Så med andre ord, den første kolonne viser tabelnavnet, og den anden kolonne viser identitetskolonnen.
Eksempel 2 – Vis alle kolonner
I det foregående eksempel returnerede jeg kun en håndfuld kolonner. Dette er fordi sys.identity_columns
returnerer mange kolonner.
I dette eksempel returnerer jeg kun én identitetskolonne (dvs. én række), men jeg returnerer alle kolonner for den række. Jeg bruger lodret output, når jeg viser resultaterne, så du ikke er tvunget til at rulle sidelæns.
SELECT *FROM sys.identity_columnsWHERE OBJECT_NAME(object_id) ='Byer';
Resultat (ved hjælp af lodret output):
De fleste af disse kolonner er nedarvet fra sys.columns
, men nogle er unikke for sys.identity columns
. For en detaljeret beskrivelse af disse kolonner, se Microsoft-dokumentationen for sys.columns
og sys.identity columns
.
Inklusive tabeller og skemaer
Du har måske bemærket, at disse eksempler ikke inkluderer skemaet i resultatsættet. Se Inkludering af tabeller og skemaer, når du angiver identitetskolonnerne, hvis du skal returnere skemaet. Denne artikel indeholder også et eksempel på fjernelse af interne tabeller fra resultaterne.