Anda dapat menggunakan T-SQL untuk mengembalikan daftar kolom identitas dalam database di SQL Server.
Anda dapat melakukannya menggunakan sys.identity_columns
tampilan katalog sistem.
Contoh 1 – Penggunaan Dasar
Berikut ini contoh untuk didemonstrasikan.
USE Test; SELECT OBJECT_NAME(object_id) AS [object], name, seed_value, increment_value, last_value, is_not_for_replication FROM sys.identity_columns;
Hasil:
+---------------------------+------------------+--------------+-------------------+--------------+--------------------------+ | 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 | +---------------------------+------------------+--------------+-------------------+--------------+--------------------------+
Saya menggunakan Test
database untuk contoh ini. Saya memilih yang ini karena saya sebelumnya telah membuat kolom identitas dengan berbagai nilai peningkatan benih.
Dalam contoh ini saya menggunakan OBJECT_NAME()
berfungsi untuk mendapatkan nama objek dari object_id
kolom. Dalam hal ini adalah nama tabel. Jadi dengan kata lain, kolom pertama mencantumkan nama tabel, dan kolom kedua mencantumkan kolom identitas.
Contoh 2 – Daftar Semua Kolom
Pada contoh sebelumnya saya hanya mengembalikan beberapa kolom. Ini karena sys.identity_columns
mengembalikan banyak kolom.
Dalam contoh ini saya hanya mengembalikan satu kolom identitas (yaitu satu baris), tetapi saya mengembalikan semua kolom untuk baris itu. Saya menggunakan output vertikal saat menampilkan hasil sehingga Anda tidak dipaksa untuk menggulir ke samping.
SELECT * FROM sys.identity_columns WHERE OBJECT_NAME(object_id) = 'Cities';
Hasil (menggunakan keluaran vertikal):
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
Sebagian besar kolom ini diwarisi dari sys.columns
, tetapi beberapa unik untuk sys.identity columns
. Untuk penjelasan rinci tentang kolom ini, lihat dokumentasi Microsoft untuk sys.columns
dan sys.identity columns
.
Termasuk Tabel &Skema
Anda mungkin telah memperhatikan bahwa contoh-contoh ini tidak menyertakan skema dalam kumpulan hasil. Lihat Menyertakan Tabel &Skema saat Mendaftar Kolom Identitas jika Anda perlu mengembalikan skema. Artikel itu juga menyertakan contoh penghapusan tabel internal dari hasil.