Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Liệt kê tất cả các cột danh tính trong cơ sở dữ liệu máy chủ SQL:sys.identity_columns

Bạn có thể sử dụng T-SQL để trả về danh sách các cột nhận dạng trong cơ sở dữ liệu trong SQL Server.

Bạn có thể thực hiện việc này bằng cách sử dụng sys.identity_columns chế độ xem danh mục hệ thống.

Ví dụ 1 - Cách sử dụng cơ bản

Đây là một ví dụ để chứng minh.

USE Test;
SELECT 
  OBJECT_NAME(object_id) AS [object],
  name,
  seed_value,
  increment_value,
  last_value,
  is_not_for_replication
FROM sys.identity_columns;

Kết quả:

+---------------------------+------------------+--------------+-------------------+--------------+--------------------------+
| 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                        |
+---------------------------+------------------+--------------+-------------------+--------------+--------------------------+

Tôi đã sử dụng Test của mình cơ sở dữ liệu cho ví dụ này. Tôi chọn cái này vì trước đây tôi đã tạo các cột nhận dạng với nhiều giá trị gia tăng gốc khác nhau.

Trong ví dụ này, tôi đã sử dụng OBJECT_NAME() hàm lấy tên của đối tượng từ object_id cột. Trong trường hợp này, đó là tên bảng. Vì vậy, nói cách khác, cột đầu tiên liệt kê tên bảng và cột thứ hai liệt kê cột nhận dạng.

Ví dụ 2 - Liệt kê Tất cả Các Cột

Trong ví dụ trước, tôi chỉ trả về một số ít cột. Điều này là do sys.identity_columns trả về rất nhiều cột.

Trong ví dụ này, tôi chỉ trả về một cột nhận dạng (tức là một hàng), nhưng tôi trả về tất cả các cột cho hàng đó. Tôi sử dụng đầu ra dọc khi hiển thị kết quả để bạn không bị buộc phải cuộn sang ngang.

SELECT *
FROM sys.identity_columns
WHERE OBJECT_NAME(object_id) = 'Cities';

Kết quả (sử dụng đầu ra dọc):

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

Hầu hết các cột này được kế thừa từ sys.columns , nhưng một số là duy nhất đối với các cột sys.identity columns . Để có mô tả chi tiết về các cột này, hãy xem tài liệu của Microsoft về sys.columns và cột sys.identity columns .

Bao gồm Bảng &Lược đồ

Bạn có thể nhận thấy rằng những ví dụ này không bao gồm lược đồ trong tập kết quả. Xem Bao gồm Bảng &Lược đồ khi Liệt kê các Cột Nhận dạng nếu bạn cần trả về lược đồ. Bài viết đó cũng bao gồm một ví dụ về việc xóa các bảng nội bộ khỏi kết quả.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tôi đã nâng cấp Trình điều khiển ODBC SQL Server và hiệu suất đã bị ảnh hưởng tiêu cực. Tôi có thể làm gì?

  2. Bảng danh sách máy chủ SQL:Cách hiển thị tất cả các bảng

  3. Sao lưu cơ sở dữ liệu trong SQL Server 2017

  4. Cách thực hiện THAM GIA MẶT BẰNG TRÁI trong SQL Server

  5. Hủy chia với tên cột