sys.columns (Transact-SQL)

適用対象:yesSQL Server (サポートされているすべてのバージョン) YesAzure SQL Database YesAzure SQL Managed Instance yesAzure Synapse Analytics yesAnalytics Platform System (PDW)

ビューやテーブルなど列を含むオブジェクトの各列の行を返します。 以下に、列を持つオブジェクトの種類の一覧を示します。

  • テーブル値アセンブリ関数 (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" によって設定される値です。
精度 tinyint 数値ベースの場合は、列の有効桁数です。それ以外の場合は、0 です。
scale tinyint 数値ベースの場合は、列の小数点以下桁数です。それ以外の場合は、0 です。
collation_name sysname 文字ベースの場合は、列の照合順序の名前です。それ以外の場合は、NULL です。
is_nullable bit 1 = 列で NULL 値を使用できます。
is_ansi_padded bit 1 = 列で ANSI_PADDING ON 動作を使用します (文字、バイナリ、または変数の場合)。

0 = 列は文字、バイナリ、またはバリアントではありません。
is_rowguidcol bit 1 = 列は宣言された 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 既定のオブジェクトの ID です。スタンドアロン オブジェクトの sys.sp_bindefault であるか、インラインの列レベルの DEFAULT 制約であるかは関係ありません。 インラインの列レベルの既定のオブジェクトの parent_object_id 列は、テーブル自体への参照です。

0 = 既定値はありません。
rule_object_id int sys.sp_bindrule を使用して列にバインドされるスタンドアロン ルールの ID です。

0 = スタンドアロン ルールはありません。 列レベルの CHECK 制約については、「sys.check_constraints (Transact-SQL)」を参照してください。
is_sparse bit 1 = 列はスパース列です。 詳細については、「 スパース列の使用」を参照してください。
is_column_set bit 1 = 列は列セットです。 詳細については、「 スパース列の使用」を参照してください。
generated_always_type tinyint 適用対象: SQL Server 2016 (13.x) 以降、SQL Database。 5、6、7、8 は、SQL Database にのみ適用されます。

列の値が生成されるタイミングを識別します (システム テーブル内の列では、常に 0 となります)。

0 = NOT_APPLICABLE
1 = AS_ROW_START
2 = AS_ROW_END
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) 適用対象: SQL Server 2016 (13.x) 以降、SQL Database。

generated_always_type の値のテキスト記述 (システム テーブルの列では、常に NOT_APPLICABLE)

NOT_APPLICABLE
AS_ROW_START
AS_ROW_END

適用対象: SQL Server 2022 以降、SQL Database

AS_TRANSACTION_ID_START
AS_TRANSACTION_ID_END
AS_SEQUENCE_NUMBER_START
AS_SEQUENCE_NUMBER_END
encryption_type int 適用対象: SQL Server 2016 (13.x) 以降、SQL Database。

暗号化の種類:

1 = 決定論的な暗号化

2 = ランダム化された暗号化
encryption_type_desc nvarchar(64) 適用対象: SQL Server 2016 (13.x) 以降、SQL Database。

暗号化の種類の説明:

RANDOMIZED

DETERMINISTIC
encryption_algorithm_name sysname 適用対象: SQL Server 2016 (13.x) 以降、SQL Database。

暗号化アルゴリズムの名前。

AEAD_AES_256_CBC_HMAC_SHA_512 のみがサポートされています。
column_encryption_key_id int 適用対象: SQL Server 2016 (13.x) 以降、SQL Database。

CEK の ID。
column_encryption_key_database_name sysname 適用対象: SQL Server 2016 (13.x) 以降、SQL Database。

列の暗号化キーが存在するデータベースの名前 (列のデータベースと異なる場合)。 NULL (キーが列と同じデータベースに存在する場合)。
is_hidden bit 適用対象: SQL Server 2019 (15.x) 以降、SQL Database。

列が非表示かどうかを示します。

0 = 通常の、非表示ではない、表示される列

1 = 非表示の列
is_masked bit 適用対象: SQL Server 2019 (15.x) 以降、SQL Database。

列が動的データ マスキングでマスクされているかどうかを示します。

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

1 = 列がマスクされている
graph_type int 値のセットを含む内部列。 値は、グラフ列は 1-8、その他は NULL です。
graph_type_desc nvarchar(60) 値のセットを含む内部列
is_data_deletion_filter_column bit 適用対象: Azure SQL Edge。 列がテーブルのデータ保持フィルター列であるかどうかを示します。
ledger_view_column_type tinyint 適用対象: SQL Server 2022 以降、SQL Database。

NULL でない場合は、台帳ビューの列の型を示します。

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

データベース台帳の詳細については、台帳に関する記事を参照してください。
ledger_view_column_type_desc nvarchar(60) 適用対象: SQL Server 2022 以降、SQL Database。

NULL でない場合は、台帳ビューの列の型のテキスト説明が含まれます。

TRANSACTION_ID
SEQUENCE_NUMBER
OPERATION_TYPE
OPERATION_TYPE_DESC
is_dropped_ledger_table_column bit 適用対象: SQL Server 2022 以降、SQL Database。

削除された台帳テーブル列を示します。

アクセス許可

カタログ ビューでのメタデータの表示が、ユーザーが所有しているかそのユーザーが権限を許可されている、セキュリティ保護可能なメタデータに制限されます。 詳細については、「 Metadata Visibility Configuration」を参照してください。

参照

システム ビュー (Transact-SQL)
オブジェクト カタログ ビュー (Transact-SQL)
カタログ ビュー (Transact-SQL)
SQL Server システム カタログに対するクエリに関してよく寄せられる質問
sys.all_columns (Transact-SQL)
sys.system_columns (Transact-SQL)