Sie können T-SQL verwenden, um eine Liste von Identitätsspalten in einer Datenbank in SQL Server zurückzugeben.
Sie können dies mit sys.identity_columns
tun Systemkatalogansicht.
Beispiel 1 – Grundlegende Verwendung
Hier ist ein Beispiel zur Veranschaulichung.
USE Test; SELECT OBJECT_NAME(object_id) AS [object], name, seed_value, increment_value, last_value, is_not_for_replication FROM sys.identity_columns;
Ergebnis:
+---------------------------+------------------+--------------+-------------------+--------------+--------------------------+ | 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 | +---------------------------+------------------+--------------+-------------------+--------------+--------------------------+
Ich habe meinen Test
verwendet Datenbank für dieses Beispiel. Ich habe mich für diese entschieden, weil ich zuvor Identitätsspalten mit verschiedenen Seed-Inkrementwerten erstellt habe.
In diesem Beispiel habe ich das OBJECT_NAME()
verwendet Funktion, um den Namen des Objekts aus der object_id
zu erhalten Säule. In diesem Fall ist es der Tabellenname. Mit anderen Worten, die erste Spalte enthält den Tabellennamen und die zweite Spalte die Identitätsspalte.
Beispiel 2 – Alle Spalten auflisten
Im vorherigen Beispiel habe ich nur eine Handvoll Spalten zurückgegeben. Dies liegt daran, dass sys.identity_columns
gibt viele Spalten zurück.
In diesem Beispiel gebe ich nur eine Identitätsspalte (d. h. eine Zeile) zurück, aber ich gebe alle Spalten für diese Zeile zurück. Ich verwende bei der Anzeige der Ergebnisse eine vertikale Ausgabe, damit Sie nicht gezwungen sind, seitwärts zu scrollen.
SELECT * FROM sys.identity_columns WHERE OBJECT_NAME(object_id) = 'Cities';
Ergebnis (bei vertikaler Ausgabe):
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
Die meisten dieser Spalten werden von sys.columns
geerbt , aber einige sind einzigartig für sys.identity columns
. Eine detaillierte Beschreibung dieser Spalten finden Sie in der Microsoft-Dokumentation für sys.columns
und sys.identity columns
.
Einschließlich Tabellen und Schemas
Sie haben vielleicht bemerkt, dass diese Beispiele das Schema nicht in der Ergebnismenge enthalten. Siehe Einschließen von Tabellen und Schemas beim Auflisten der Identitätsspalten, wenn Sie das Schema zurückgeben müssen. Dieser Artikel enthält auch ein Beispiel für das Entfernen interner Tabellen aus den Ergebnissen.