SQL Server 結構描述集合 (ADO.NET)

更新: November 2007

除了通用結構描述集合之外,Microsoft .NET Framework Data Provider for SQL Server 還支援其他結構描述集合。這些結構描述集合會因您目前使用的 SQL Server 版本而稍微不同。若要判斷支援的結構描述集合清單,請呼叫 GetSchema 方法但不搭配任何引數或搭配結構描述集合名稱 "MetaDataCollections"。這會傳回 DataTable,包括支援的結構描述集合清單、每個集合所支援的限制數目,以及集合所使用之識別項部分的數目。

Databases

資料行名稱

資料型別

描述

database_name

String

資料庫的名稱。

Dbid

Int16

資料庫 ID。

create_date

DateTime

資料庫的建立日期。

Foreign Keys

資料行名稱

資料型別

說明

constraint_catalog

String

條件約束所屬的目錄。

constraint_schema

String

包含條件約束的結構描述。

constraint_name

String

名稱。

table_catalog

String

包含條件約束的資料表名稱。

table_schema

String

包含資料表的結構描述。

table_name

String

資料表名稱

constraint_type

String

條件約束的型別。僅允許 FOREIGN KEY。

is_deferrable

String

指定條件約束是否可以延遲。傳回 NO。

initially_deferred

String

指定條件約束一開始是否可以延遲。傳回 NO。

Indexes

資料行名稱

資料型別

說明

constraint_catalog

String

索引所屬的目錄。

constraint_schema

String

包含索引的結構描述。

constraint_name

String

索引名稱。

table_catalog

String

與索引相關的資料表名稱。

table_schema

String

包含與索引相關之資料表的結構描述。

table_name

String

資料表名稱。

Indexes (SQL Server 2008)

從 .NET Framework 3.5 版 SP1 和 SQL Server 2008 開始,下列資料行就已經加入至 Indexes 結構描述集合,以便支援新的空間類型、Filestream 和疏鬆資料行。舊版 .NET Framework 和 SQL Server 不支援這些資料行。

資料行名稱

資料型別

描述

type_desc

String

索引的類型將屬於下列其中一種類型:

  • HEAP

  • CLUSTERED

  • NONCLUSTERED

  • XML

  • SPATIAL

IndexColumns

資料行名稱

資料型別

描述

constraint_catalog

String

索引所屬的目錄。

constraint_schema

String

包含索引的結構描述。

constraint_name

String

索引名稱。

table_catalog

String

與索引相關的資料表名稱。

table_schema

String

包含與索引相關之資料表的結構描述。

table_name

String

資料表名稱。

column_name

String

與索引相關的資料行名稱。

ordinal_position

Int32

資料行序數位置。

KeyType

UInt16

物件的型別。

Procedures

此集合僅適用於 SQL Server 2000 及以上版本。

資料行名稱

資料型別

說明

specific_catalog

String

目錄的特定名稱。

specific_schema

String

結構描述的特定名稱。

specific_name

String

目錄的特定名稱。

routine_catalog

String

預存程序所屬的目錄。

routine_schema

String

包含預存程序的結構描述。

routine_name

String

預存程序的名稱。

routine_type

String

針對預存程序傳回 PROCEDURE,並針對函式傳回 FUNCTION。

created

DateTime

建立程序的時間。

last_altered

DateTime

上次修改程序的時間。

Procedure Parameters

資料行名稱

資料型別

說明

specific_catalog

String

此為其參數之程序的目錄名稱。

specific_schema

String

包含此參數所屬程序的結構描述。

specific_name

String

此參數所屬程序的名稱。

ordinal_position

Int16

以 1 開始的參數序數位置。若為程序的傳回值,則此項為 0。

parameter_mode

String

若為輸入參數,傳回 IN;若為輸出參數,傳回 OUT;若為輸入/輸出參數,傳回 INOUT。

is_result

String

若表示做為函式之程序的結果,傳回 YES。否則,傳回 NO。

as_locator

String

若宣告為定位器,傳回 YES。否則,傳回 NO。

parameter_name

String

參數名稱。若對應至函式的傳回值,則為 NULL。

data_type

String

系統提供的資料型別。

character_maximum_length

Int32

二進位或字元資料型別的長度上限 (字元數)。否則,傳回 NULL。

character_octet_length

Int32

二進位或字元資料型別的最大長度 (以位元組為單位)。否則,傳回 NULL。

collation_catalog

String

參數集合的目錄名稱。若不是其中一個字元型別,則傳回 NULL。

collation_schema

String

永遠傳回 NULL。

collation_name

String

參數集合的名稱。若不是其中一個字元型別,則傳回 NULL。

character_set_catalog

String

參數字元集的目錄名稱。若不是其中一個字元型別,則傳回 NULL。

character_set_schema

String

永遠傳回 NULL。

character_set_name

String

參數字元集的名稱。若不是其中一個字元型別,則傳回 NULL。

numeric_precision

Byte

概略數值資料、精確數值資料、整數資料或貨幣資料的精確度。否則,傳回 NULL。

numeric_precision_radix

Int16

概略數值資料、精確數值資料、整數資料或貨幣資料的精確度基數。否則,傳回 NULL。

numeric_scale

Int32

概略數值資料、精確數值資料、整數資料或貨幣資料的小數位數。否則,傳回 NULL。

datetime_precision

Int16

若參數型別為 datetime 或 smalldatetime,則為以分數秒為單位的精確度。否則,傳回 NULL。

interval_type

String

NULL。保留供 SQL Server 日後使用。

interval_precision

Int16

NULL。保留供 SQL Server 日後使用。

Tables

資料行名稱

資料型別

說明

table_catalog

String

資料表的目錄。

table_schema

String

包含資料表的結構描述。

table_name

String

資料表名稱。

table_type

String

資料表型別。可為 VIEW 或 BASE TABLE。

Columns

資料行名稱

資料型別

說明

table_catalog

String

資料表的目錄。

table_schema

String

包含資料表的結構描述。

table_name

String

資料表名稱。

column_name

String

資料行名稱。

ordinal_position

Int16

資料行識別碼。

column_default

String

資料行的預設值。

is_nullable

String

資料行的 Null 屬性。若此資料行允許 NULL,其會傳回 YES。否則,傳回 NO。

data_type

String

系統提供的資料型別。

character_maximum_length

Int32 – Sql8, Int16 – Sql7

二進位資料、字元資料或文字及影像資料的長度上限 (以字元數為單位)。否則,傳回 NULL。

character_octet_length

Int32 – SQL8, Int16 – Sql7

二進位資料、字元資料或文件及影像資料的長度上限 (以位元組為單位)。否則,傳回 NULL。

numeric_precision

Unsigned Byte

概略數值資料、精確數值資料、整數資料或貨幣資料的精確度。否則,傳回 NULL。

numeric_precision_radix

Int16

概略數值資料、精確數值資料、整數資料或貨幣資料的精確度基數。否則,傳回 NULL。

numeric_scale

Int32

概略數值資料、精確數值資料、整數資料或貨幣資料的小數位數。否則,傳回 NULL。

datetime_precision

Int16

datetime 及 SQL-92 間隔資料型別的子型別程式碼。若為其他資料型別,則傳回 NULL。

character_set_catalog

String

若資料行為字元資料或文字資料型別,則傳回 master,表示字元集所在的資料庫。否則,傳回 NULL。

character_set_schema

String

永遠傳回 NULL。

character_set_name

String

若此資料行為字元資料或文字資料型別,則傳回字元集的唯一名稱。否則,傳回 NULL。

collation_catalog

String

若資料行為字元資料或文字資料型別,則傳回 master,表示定義定序的資料庫。否則,此資料行為 NULL。

Columns (SQL Server 2008)

從 .NET Framework 3.5 版 SP1 和 SQL Server 2008 開始,下列資料行就已經加入至 Columns 結構描述集合,以便支援新的空間類型、Filestream 和疏鬆資料行。舊版 .NET Framework 和 SQL Server 不支援這些資料行。

資料行名稱

資料型別

描述

IS_FILESTREAM

String

YES (如果資料行具有 FILESTREAM 屬性)。

NO (如果資料行沒有 FILESTREAM 屬性)。

IS_SPARSE

String

YES (如果資料行是疏鬆資料行)。

NO (如果資料行不是疏鬆資料行)。

IS_COLUMN_SET

String

YES (如果資料行是資料行集資料行)。

NO (如果資料行不是資料行集資料行)。

AllColumns (SQL Server 2008)

從 .NET Framework 3.5 版 SP1 和 SQL Server 2008 開始,就已經加入 AllColumns 結構描述集合,以便支援疏鬆資料行。舊版 .NET Framework 和 SQL Server 不支援 AllColumns。

AllColumns 與 Columns 結構描述集合具有相同的限制和產生的 DataTable 結構描述。唯一的差異是 AllColumns 包含了 Columns 結構描述集合並未包含的資料行集資料行。下表將描述這些資料行。

資料行名稱

資料型別

描述

table_catalog

String

資料表的目錄。

table_schema

String

包含資料表的結構描述。

table_name

String

資料表名稱。

column_name

String

資料行名稱。

ordinal_position

Int16

資料行識別碼。

column_default

String

資料行的預設值。

is_nullable

String

資料行的 Null 屬性。若此資料行允許 NULL,其會傳回 YES。否則,會傳回 NO。

data_type

String

系統提供的資料型別。

character_maximum_length

Int32 (SQL Server 2000 和更新版本) 和 Int16 (SQL Server 7.0)

二進位資料、字元資料或文字及影像資料的長度上限 (以字元數為單位)。否則,傳回 NULL。

character_octet_length

Int32 (SQL Server 2000 和更新版本) 和 Int16 (SQL Server 7.0)

二進位資料、字元資料或文件及影像資料的長度上限 (以位元組為單位)。否則,傳回 NULL。

numeric_precision

Unsigned Byte

概略數值資料、精確數值資料、整數資料或貨幣資料的精確度。否則,傳回 NULL。

numeric_precision_radix

Int16

概略數值資料、精確數值資料、整數資料或貨幣資料的精確度基數。否則,傳回 NULL。

numeric_scale

Int32

概略數值資料、精確數值資料、整數資料或貨幣資料的小數位數。否則,傳回 NULL。

datetime_precision

Int16

datetime 及 SQL-92 間隔資料型別的子型別程式碼。若為其他資料型別,則傳回 NULL。

character_set_catalog

String

若資料行為字元資料或文字資料型別,則傳回 master,表示字元集所在的資料庫。否則,傳回 NULL。

character_set_schema

String

永遠傳回 NULL。

character_set_name

String

若此資料行為字元資料或文字資料型別,則傳回字元集的唯一名稱。否則,傳回 NULL。

collation_catalog

String

若資料行為字元資料或文字資料型別,則傳回 master,表示定義定序的資料庫。否則,此資料行為 NULL。

IS_FILESTREAM

String

YES (如果資料行具有 FILESTREAM 屬性)。

NO (如果資料行沒有 FILESTREAM 屬性)。

IS_SPARSE

String

YES (如果資料行是疏鬆資料行)。

NO (如果資料行不是疏鬆資料行)。

IS_COLUMN_SET

String

YES (如果資料行是資料行集資料行)。

NO (如果資料行不是資料行集資料行)。

ColumnSetColumns (SQL Server 2008)

從 .NET Framework 3.5 版 SP1 和 SQL Server 2008 開始,就已經加入 ColumnSetColumns 結構描述集合,以便支援疏鬆資料行。舊版 .NET Framework 和 SQL Server 不支援 ColumnSetColumns。ColumnSetColumns 結構描述集合會針對資料行集中的所有資料行傳回結構描述。下表將描述這些資料行。

資料行名稱

資料型別

描述

table_catalog

String

資料表的目錄。

table_schema

String

包含資料表的結構描述。

table_name

String

資料表名稱。

column_name

String

資料行名稱。

ordinal_position

Int16

資料行識別碼。

column_default

String

資料行的預設值。

is_nullable

String

資料行的 Null 屬性。若此資料行允許 NULL,其會傳回 YES。否則,會傳回 NO。

data_type

String

系統提供的資料型別。

character_maximum_length

Int32 (SQL Server 2000 和更新版本) 和 Int16 (SQL Server 7.0)

二進位資料、字元資料或文字及影像資料的長度上限 (以字元數為單位)。否則,傳回 NULL。

character_octet_length

Int32 (SQL Server 2000 和更新版本) 和 Int16 (SQL Server 7.0)

二進位資料、字元資料或文件及影像資料的長度上限 (以位元組為單位)。否則,傳回 NULL。

numeric_precision

Unsigned Byte

概略數值資料、精確數值資料、整數資料或貨幣資料的精確度。否則,傳回 NULL。

numeric_precision_radix

Int16

概略數值資料、精確數值資料、整數資料或貨幣資料的精確度基數。否則,傳回 NULL。

numeric_scale

Int32

概略數值資料、精確數值資料、整數資料或貨幣資料的小數位數。否則,傳回 NULL。

datetime_precision

Int16

datetime 及 SQL-92 間隔資料型別的子型別程式碼。若為其他資料型別,則傳回 NULL。

character_set_catalog

String

若資料行為字元資料或文字資料型別,則傳回 master,表示字元集所在的資料庫。否則,傳回 NULL。

character_set_schema

String

永遠傳回 NULL。

character_set_name

String

若此資料行為字元資料或文字資料型別,則傳回字元集的唯一名稱。否則,傳回 NULL。

collation_catalog

String

若資料行為字元資料或文字資料型別,則傳回 master,表示定義定序的資料庫。否則,此資料行為 NULL。

IS_FILESTREAM

String

YES (如果資料行具有 FILESTREAM 屬性)。

NO (如果資料行沒有 FILESTREAM 屬性)。

IS_SPARSE

String

YES (如果資料行是疏鬆資料行)。

NO (如果資料行不是疏鬆資料行)。

IS_COLUMN_SET

String

YES (如果資料行是資料行集資料行)。

NO (如果資料行不是資料行集資料行)。

Users

資料行名稱

資料型別

描述

uid

Int16

使用者 ID,在此資料庫中是唯一的。1 是資料庫擁有人。

name

String

使用者名稱或群組名稱,在此資料庫中是唯一的。

createdate

DateTime

加入帳戶的日期。

updatedate

DateTime

上次變更帳戶的日期。

Views

此集合僅適用於 SQL Server 2000 及以上版本。

資料行名稱

資料型別

說明

table_catalog

String

檢視表的目錄。

table_schema

String

包含檢視表的結構描述。

table_name

String

檢視表名稱。

check_option

String

WITH CHECK OPTION 的型別。若原始檢視表是使用 WITH CHECK OPTION 所建立的,則為 CASCADE。否則,傳回 NONE。

is_updatable

String

指定檢視表是否可以更新。永遠傳回 NO。

ViewColumns

資料行名稱

資料型別

說明

view_catalog

String

檢視表的目錄。

view_schema

String

包含檢視表的結構描述。

view_name

String

檢視表名稱。

table_catalog

String

與此檢視表相關之資料表的目錄。

table_schema

String

包含與此檢視表相關之資料表的結構描述。

table_name

String

與檢視表相關之資料表的名稱。基底資料表。

column_name

String

資料行名稱。

UserDefinedTypes

此集合僅適用於 SQL Server 2005 及以上版本。

資料行名稱

資料型別

說明

assembly_name

String

組件檔案的名稱。

UDT_name

String

組件的類別名稱。

version_major

Object

主要版本號碼。

version_minor

Object

次要版本號碼。

version_build

Object

組建編號。

version_revision

Object

修訂編號。

Culture_info

Object

與此 UDT 相關的文化特性資訊。

Public_key

Object

此組件使用的公開金鑰。

Is_fixed_length

Boolean

指定型別的長度是否永遠與 max_length 相同。

max_length

Int16

型別的最大長度 (以位元組為單位)。

permission_set_desc

String

組件使用權限集合/安全性層級的易記名稱。

create_date

DateTime

建立/登錄組件的日期。

請參閱

其他資源

擷取資料庫結構描述資訊 (ADO.NET)