次の方法で共有


sys.columns (Transact-SQL)

Applies to: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric の SQL 分析エンドポイント Microsoft Fabric のウェアハウス

ビューやテーブルなど列を含むオブジェクトの各列の行を返します。 次の一覧には、列を含むオブジェクト型が含まれています。

  • テーブル値アセンブリ関数 (FT)
  • インライン テーブル値 SQL 関数 (IF)
  • 内部テーブル (IT)
  • システム テーブル (S)
  • テーブル値 SQL 関数 (TF)
  • ユーザー テーブル (U)
  • ビュー (V)
列名 データ型 説明
object_id int この列が所属するオブジェクトの ID。
name sysname 列の名前です。 オブジェクト内で一意です。
column_id int 列の ID。 オブジェクト内で一意です。 列 ID は、シーケンシャルではない可能性があります。
system_type_id tinyint 列のシステム型の ID。
user_type_id int ユーザーによって定義された列の型の ID。 型の名前を返すには、この列の sys.types カタログ ビューに結合します。
max_length smallint 列の最大長 (バイト単位) です。

-1 = 列データ型が varchar(max)nvarchar(max)varbinary(max)、または xml です。

textntext、および image 列の場合、max_length値は16 (16 バイト ポインターのみを表します) またはsp_tableoption 'text in row'によって設定された値です。
precision tinyint 数値ベースの場合の列の有効桁数。それ以外の場合は 0
scale tinyint 数値ベースの場合の列のスケール。それ以外の場合は 0
collation_name sysname 文字ベースの場合は、列の照合順序の名前です。それ以外の場合は、NULL です。
is_nullable bit 1 = 列が null 許容
0 = 列が null 許容でない
is_ansi_padded bit 1 = 列は、文字、バイナリ、またはバリアントの場合に ANSI_PADDING ON 動作を使用します

0 = 列が文字、バイナリ、またはバリアントではない
is_rowguidcol bit 1 = Column is a declared ROWGUIDCOL
is_identity bit 1 = 列に ID 値がある
is_computed bit 1 = 列は計算列です
is_filestream bit 1 = 列は FILESTREAM 列です
is_replicated bit 1 = 列がレプリケートされる
is_non_sql_subscribed bit 1 = 列に SQL Server 以外のサブスクライバーがある
is_merge_published bit 1 = 列がマージパブリッシュされる
is_dts_replicated bit 1 = 列は SSIS を使用してレプリケートされます
is_xml_document bit 1 = コンテンツは完全な XML ドキュメントです

0 = コンテンツがドキュメント フラグメントであるか、列データ型が xml ではない
xml_collection_id int 列のデータ型が xml で XML が型指定されている場合は、ゼロ以外の値です。 値は、列の検証 XML スキーマ名前空間を含むコレクションの ID です。

0 = XML スキーマ コレクションなし
default_object_id int スタンドアロン オブジェクト sp_bindefaultであるか、インライン列レベルの DEFAULT 制約であるかに関係なく、既定のオブジェクトの ID。 インラインの列レベルの既定のオブジェクトの parent_object_id 列は、テーブル自体への参照です。

0 = 既定値なし
rule_object_id int を使用して列にバインドされたスタンドアロン規則の ID sys.sp_bindrule.

0 = スタンドアロンルールなし。 列レベルの CHECK 制約については、 sys.check_constraintsを参照してください。
is_sparse bit 1 = 列はスパース列です。 詳細については、「 スパース列の使用を参照してください。
is_column_set bit 1 = 列は列セットです。 詳細については、「 スパース列の使用を参照してください。
generated_always_type tinyint 列の値が生成されるタイミングを識別します (システム テーブル内の列に対して常に 0 されます)。

適用対象: SQL Server 2016 (13.x) 以降のバージョンと SQL Database。

0 = NOT_APPLICABLE
1 = AS_ROW_START
2 = AS_ROW_END

適用対象: SQL Server 2022 (16.x) 以降のバージョン、および SQL Database。

5 = AS_TRANSACTION_ID_START
6 = AS_TRANSACTION_ID_END
7 = AS_SEQUENCE_NUMBER_START
8 = AS_SEQUENCE_NUMBER_END

詳細については、テンポラル テーブル (リレーショナル データベース) に関する記事を参照してください。
generated_always_type_desc nvarchar(60) generated_always_type値のテキスト説明 (システム テーブル内の列に対して常にNOT_APPLICABLE)

適用対象: SQL Server 2016 (13.x) 以降のバージョンと SQL Database。

NOT_APPLICABLE
AS_ROW_START
AS_ROW_END

適用対象: SQL Server 2022 (16.x) 以降のバージョン、および SQL Database。

AS_TRANSACTION_ID_START
AS_TRANSACTION_ID_END
AS_SEQUENCE_NUMBER_START
AS_SEQUENCE_NUMBER_END
encryption_type int 暗号化の種類:

1 = 決定論的暗号化
2 = ランダム化された暗号化

適用対象: SQL Server 2016 (13.x) 以降のバージョン、および SQL Database
encryption_type_desc nvarchar(64) 暗号化の種類の説明:

RANDOMIZED
DETERMINISTIC

適用対象: SQL Server 2016 (13.x) 以降のバージョン、および SQL Database
encryption_algorithm_name sysname 暗号化アルゴリズムの名前。 サポートされるのは AEAD_AES_256_CBC_HMAC_SHA_512 のみです。

適用対象: SQL Server 2016 (13.x) 以降のバージョン、および SQL Database
column_encryption_key_id int 列暗号化キー (CEK) の ID。

適用対象: SQL Server 2016 (13.x) 以降のバージョン、および SQL Database
column_encryption_key_database_name sysname 列の暗号化キーが存在するデータベースの名前 (列のデータベースと異なる場合)。 NULL (キーが列と同じデータベースに存在する場合)。

適用対象: SQL Server 2016 (13.x) 以降のバージョン、および SQL Database
is_hidden bit 列が非表示かどうかを示します。

0 = 通常の非表示でない、表示可能な列
1 = 非表示の列

適用対象: SQL Server 2016 (13.x) 以降のバージョン、および SQL Database
is_masked bit 列が動的データ マスクによってマスクされているかどうかを示します。

0 = 通常のマスクされていない列
1 = 列がマスクされている

適用対象: SQL Server 2016 (13.x) 以降のバージョン、および SQL Database
graph_type int 値のセットを含む内部列。 値は、グラフ列の 18 の間、および他の列の NULL の間にあります。
graph_type_desc nvarchar(60) 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
is_data_deletion_filter_column bit 列がテーブルのデータ保持フィルター列であるかどうかを示します。

適用対象: Azure SQL Edge
ledger_view_column_type int NULLされていない場合は、台帳ビューの列の種類を示します。

1 = TRANSACTION_ID
2 = SEQUENCE_NUMBER
3 = OPERATION_TYPE
4 = OPERATION_TYPE_DESC

詳細については、「 Ledger の概要を参照してください。

適用対象: SQL Server 2022 (16.x) 以降のバージョン、および SQL Database
ledger_view_column_type_desc nvarchar(60) NULLされていない場合は、台帳ビューの列の種類に関するテキストの説明が含まれます。

TRANSACTION_ID
SEQUENCE_NUMBER
OPERATION_TYPE
OPERATION_TYPE_DESC

適用対象: SQL Server 2022 (16.x) 以降のバージョン、および SQL Database
is_dropped_ledger_column bit 削除された台帳テーブル列を示します。

適用対象: SQL Server 2022 (16.x) 以降のバージョン、および SQL Database

アクセス許可

カタログ ビューでのメタデータの可視性は、ユーザーが所有しているか、ユーザーに何らかのアクセス許可が付与されているセキュリティ保護可能なリソースに限定されます。 詳細については、「 Metadata Visibility Configuration」を参照してください。

使用例

テーブルの列の詳細を取得する

テーブル内の列のメタデータを取得するには、次のコードを使用できます。

CREATE TABLE dbo.[sample] (
    id INT NOT NULL
    ,col1 VARBINARY(10) NULL
    )
GO

SELECT c.[name] AS column_name
    ,t.[name] AS [type_name]
    ,c.[max_length]
    ,c.[precision]
    ,c.[scale]
FROM sys.columns c
INNER JOIN sys.types t ON c.user_type_id = t.user_type_id
WHERE object_id = object_id('dbo.sample');