Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Избройте всички колони за идентичност в база данни на SQL Server:sys.identity_columns

Можете да използвате 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 .

Включително таблици и схеми

Може да сте забелязали, че тези примери не включват схемата в набора от резултати. Вижте Включване на таблици и схеми при изброяване на колоните за идентичност, ако трябва да върнете схемата. Тази статия включва и пример за премахване на вътрешни таблици от резултатите.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да започнете със SQL Server на Azure

  2. Представяме първата в света SaaS платформа за предоставяне на задълбочена диагностика за хибридни SQL сървърни среди

  3. SQL:Изберете Топ 3 записа + Сума от количество

  4. SQL Server :Колони към редове

  5. Как мога да комбинирам няколко реда в списък, разделен със запетая в SQL Server 2005?