T-SQLを使用して、SQLServerのデータベース内のID列のリストを返すことができます。
これは、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
を使用しました この例のデータベース。以前にさまざまなシード増分値を使用してID列を作成したことがあるため、これを選択しました。
この例では、OBJECT_NAME()
を使用しました object_id
からオブジェクトの名前を取得する関数 桁。この場合、それはテーブル名です。つまり、最初の列にはテーブル名がリストされ、2番目の列にはID列がリストされます。
例2–すべての列を一覧表示する
前の例では、ほんの一握りの列しか返しませんでした。これは、sys.identity_columns
が原因です。 多くの列を返します。
この例では、1つのID列(つまり、1つの行)のみを返しますが、その行のすべての列を返します。結果を表示するときに垂直出力を使用して、横にスクロールする必要がないようにします。
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
。
テーブルとスキーマを含む
これらの例では、結果セットにスキーマが含まれていないことに気付いたかもしれません。スキーマを返す必要がある場合は、ID列を一覧表示するときにテーブルとスキーマを含めるを参照してください。この記事には、結果から内部テーブルを削除する例も含まれています。