Możesz użyć T-SQL, aby zwrócić listę kolumn tożsamości w bazie danych w SQL Server.
Możesz to zrobić za pomocą sys.identity_columns
widok katalogu systemowego.
Przykład 1 – Podstawowe użycie
Oto przykład do zademonstrowania.
USE Test; SELECT OBJECT_NAME(object_id) AS [object], name, seed_value, increment_value, last_value, is_not_for_replication FROM sys.identity_columns;
Wynik:
+---------------------------+------------------+--------------+-------------------+--------------+--------------------------+ | 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 | +---------------------------+------------------+--------------+-------------------+--------------+--------------------------+
Użyłem mojego Test
baza danych dla tego przykładu. Wybrałem ten, ponieważ wcześniej stworzyłem kolumny tożsamości z różnymi wartościami przyrostu nasion.
W tym przykładzie użyłem OBJECT_NAME()
funkcja do pobrania nazwy obiektu z object_id
kolumna. W tym przypadku jest to nazwa tabeli. Innymi słowy, pierwsza kolumna zawiera nazwę tabeli, a druga kolumna zawiera kolumnę tożsamości.
Przykład 2 – Lista wszystkich kolumn
W poprzednim przykładzie zwróciłem tylko kilka kolumn. Dzieje się tak, ponieważ sys.identity_columns
zwraca wiele kolumn.
W tym przykładzie zwracam tylko jedną kolumnę tożsamości (tj. jeden wiersz), ale zwracam wszystkie kolumny dla tego wiersza. Używam wyjścia pionowego podczas wyświetlania wyników, aby nie trzeba było przewijać na boki.
SELECT * FROM sys.identity_columns WHERE OBJECT_NAME(object_id) = 'Cities';
Wynik (przy użyciu wyjścia pionowego):
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
Większość z tych kolumn jest dziedziczona z sys.columns
, ale niektóre są unikalne dla kolumn sys.identity columns
. Szczegółowy opis tych kolumn znajduje się w dokumentacji firmy Microsoft dla sys.columns
i sys.identity columns
.
W tym tabele i schematy
Być może zauważyłeś, że te przykłady nie zawierają schematu w zestawie wyników. Zobacz Dołączanie tabel i schematów podczas wyświetlania kolumn tożsamości, jeśli chcesz zwrócić schemat. Ten artykuł zawiera również przykład usuwania wewnętrznych tabel z wyników.