Можете да използвате T-SQL, за да върнете списък с колони за идентичност в база данни в SQL Server.
Можете да направите това с помощта на sys.identity_columns
изглед на системния каталог.
Пример 1 – Основна употреба
Ето пример за демонстрация.
USE Test; SELECT OBJECT_NAME(object_id) AS [object], name, seed_value, increment_value, last_value, is_not_for_replication FROM sys.identity_columns;
Резултат:
+---------------------------+------------------+--------------+-------------------+--------------+--------------------------+ | 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 | +---------------------------+------------------+--------------+-------------------+--------------+--------------------------+
Използвах моя Test
база данни за този пример. Избрах този, защото преди това създадох колони за идентичност с различни стойности на нарастване.
В този пример използвах OBJECT_NAME()
функция за получаване на името на обекта от object_id
колона. В този случай това е името на таблицата. С други думи, първата колона изброява името на таблицата, а втората колона изброява колоната за самоличност.
Пример 2 – Изброяване на всички колони
В предишния пример върнах само шепа колони. Това е така, защото sys.identity_columns
връща много колони.
В този пример връщам само една колона за идентичност (т.е. един ред), но връщам всички колони за този ред. Използвам вертикално извеждане, когато показвам резултатите, така че да не сте принудени да превъртате настрани.
SELECT * FROM sys.identity_columns WHERE OBJECT_NAME(object_id) = 'Cities';
Резултат (с помощта на вертикален изход):
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
Повечето от тези колони са наследени от sys.columns
, но някои са уникални за sys.identity columns
. За подробно описание на тези колони вижте документацията на Microsoft за sys.columns
и sys.identity columns
.
Включително таблици и схеми
Може да сте забелязали, че тези примери не включват схемата в набора от резултати. Вижте Включване на таблици и схеми при изброяване на колоните за идентичност, ако трябва да върнете схемата. Тази статия включва и пример за премахване на вътрешни таблици от резултатите.